略過導覽

.NET 基礎結構團隊投資一致性以加速開放原始碼創新

觀看 GitHub 存放庫間的共用工具和單一共用 CI 系統如何大幅提升開發人員生產力。

閱讀完整案例

挑戰:為開放原始碼參與者簡化共同作業

As an independent organization created to foster innovation through open development and collaboration, the .NET Foundation supports a large and complex set of open-source projects, including .NET Core. The Microsoft .NET Engineering Services team contributes to the project and is responsible for much of the infrastructure that enables contributors from around the world to work together.

With dozens of different git repositories on GitHub, a broad range of tools, and several different continuous integration (CI) systems in use across the project, there was a lot of confusion that inhibited productivity. The sheer scale of the project added to the complexity. For example, the Roslyn (C# compiler) repo alone runs more than 600,000 automated tests for one iteration of a pull request. With more than 50 pull requests per week, each with multiple iterations, the number of CI tests is in the billions. For CoreFx (libraries), the numbers are even higher. As the .NET Engineering Services team planned for the .NET Core 3.0 release, they decided to make big changes to establish greater consistency and enable contributors to realize the full potential of the project.

"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?"

.NET 工程服務首席軟體工程師 Matt Mitchell

透過共用工具和單一 CI 系統來改善生產力

To make it easier for developers to move between different parts of the software stack, the .NET Engineering Services team worked to bring all repos under a common directory structure, set of commands, and build-and-test logic. The team eliminated further barriers to productivity by moving all existing workflows from the different CI systems into a single system in Azure Pipelines. Because the system is fully managed, they no longer have the burden of managing the CI server infrastructure. The team is now practicing configuration as code through YAML files that are stored in GitHub, and YAML pipelines are used everywhere. Whereas some repos had previously done CI serially—requiring developers to sometimes wait two or three hours between iterations on their code—all CI pipelines are now parallelized to enable faster iterations.

"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."

.NET 工程服務首席軟體工程師 Matt Mitchell

更優良的共同作業造就更優質的產品

現在,開發人員可以更輕鬆地在存放庫之間移動、找出錯誤的根本原因,並提出及測試修正,這些幾乎都不需要過去所需的專業知識。GitHub 中的這種簡化開放原始碼共同作業,可讓開發人員在共同編寫、測試、建置與傳遞高品質軟體時,更快地創新。而且由於 .NET 工程服務小組可以在完整堆疊中變更基礎結構,因此,他們能夠提供工具改進功能,讓開發人員能更快且更有效率地在所有存放庫中加以利用。

深入了解小組的旅程和決策制定。

閱讀完整案例