跳转至主内容
Azure

.NET 基础结构团队通过投资于一致性来加速开放源代码创新

观看跨 GitHub 存储库的共享工具和单一共享 CI 系统如何为开发人员带来巨大的生产力收益。

阅读完整案例

挑战:为开放源代码参与者简化协作

作为通过开放式开发和协作,为促进创新而创建的独立组织,.NET Foundation 支持包括 .NET Core 的大型复杂开放源代码项目。Microsoft .NET工程服务团队为项目做出贡献,并负责支持世界各地的参与者能够协同工作的大部分基础结构。

由于项目中使用了 GitHub 上数十个不同的 git 存储库、各种工具和多个不同的持续集成(CI)系统,因此存在许多阻碍工作效率的混淆。项目的庞大规模增加了复杂性。例如,Roslyn (C# 编译器)存储库单独针对拉取请求的一次迭代即需要运行超过 600,000 个自动测试。按照每周超过 50 个拉取请求,每个请求具有多个迭代计算,CI 测试数将以十亿计。对于 CoreFx (库),数量甚至可以更高。由于 .NET 工程服务团队计划推出 .NET Core 3.0 版本,因此他们决定进行重大更改以建立更大的一致性,并使参与者能够实现项目的全部潜力。

"A distributed repo structure and tooling makes it a lot harder for developers to move from one repo to another … And if it's this hard on Microsoft developers, how can we expect most individual contributors to figure it out?"

Matt Mitchell, .NET 工程服务的首席软件工程师

通过共享工具和单一 CI 系统提高生产力

为了使开发人员更轻松地在软件堆栈的不同部分之间移动,.NET 工程服务团队致力于将所有存储库置于通用目录结构、命令集以及生成和测试逻辑下。团队通过将所有现有工作流从不同的 CI 系统移到 Azure Pipelines 中的单个系统,进一步消除了工作效率的障碍。由于系统是完全托管的,因此不再有管理 CI 服务器基础结构的负担。现在,团队通过存储在 GitHub 中的 YAML 文件将配置作为代码进行练习,并将 YAML 管道用于任何地方。虽然某些存储库以前已串行执行 CI (要求开发人员有时在其代码迭代之间等待两到三个小时),但现在所有 CI 管道都已并行化,以实现更快的迭代。

"Now that we longer need to worry about the operational aspects of CI, we're free to focus on further improvements that will be felt by all—including Microsoft developers and individual contributors alike."

Matt Mitchell, .NET 工程服务的首席软件工程师

更好的协作可以创造出更好的产品

如今,开发人员可以更轻松地从一个存储库转移到另一个存储库,查找 bug 的根本原因,并提出和测试修复程序,所有这些操作几乎都不需要像过去那样具有丰富的专业知识。GitHub 中的这种简化的开放源代码协作使开发人员在共同编写、测试、构建和交付高质量软件时可以更快地进行创新。此外,由于 .NET 工程服务团队可以跨整个堆栈进行基础结构更改,因此他们能够交付工具改进,以便开发人员更快速、更有效地利用所有存储库。

深入了解团队的历程和决策。

阅读完整案例