Trace Id is missing
跳到主内容

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

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

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

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

GitHub 上有数十个不同的 Git 存储库、各种类型的工具以及整个项目中正在使用的多个不同的持续集成 (CI) 系统,因此存在影响生产力的许多困扰。项目的庞大规模增加了复杂性。例如,对于一个拉取请求的一次迭代,仅 Roslyn (C# 编译器)存储库就会运行超过 600,000 个自动测试。如果每周有超过 50 个拉取请求,每个请求有多次迭代,则 CI 测试的数量将达到数十亿。对于 CoreFx(库),这一数字甚至更高。在 .NET 工程服务团队计划发布 .NET Core 3.0 版时,他们决定进行重大更改以建立更高的一致性,使参与者能够充分发挥项目的潜力。

人们正在对话

挑战:适应云操作模型

"分布式存储库结构和工具使开发人员很难从一个存储库迁移到另一个存储库…如果 Microsoft 开发人员都很难解决此问题,我们如何期望大多数个体参与者解决此问题?"

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

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

为了让开发人员更容易地在软件堆栈的不同部分间移动,.NET 工程服务团队将所有存储库置于一个公共目录结构、一组命令以及构建和测试逻辑下。通过将所有现有工作流从不同的 CI 系统移到  Azure Pipelines 中的单一系统中,团队消除了生产力的更多障碍。由于系统是完全托管的,因此它们不再有管理 CI 服务器基础结构的负担。团队现在可通过存储在 GitHub 中的 YAML 文件实践配置即代码,并任意使用 YAML 管道。尽管某些存储库以前是串行完成 CI 的(有时需要开发人员在代码迭代之间等待 2-3 个小时),但现在所有 CI 管道都已并行化,从而支持更快的迭代。

挑战:适应云操作模型

"现在,我们不再需要担心 CI 的操作方面,因此我们可以专注于进一步改进,包括 Microsoft 开发人员和个体参与者在内的所有人都将感受到改进成果。"

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

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

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

办公室里的人正在办公桌前工作
深入了解团队的历程和决策。
阅读完整案例