.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 Engineering Services、プリンシパル ソフトウェア エンジニア、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 Engineering Services、プリンシパル ソフトウェア エンジニア、Matt Mitchell

コラボレーションの向上が優れた製品を生み出す

今日、開発者は、これまで必要とされた専門知識がほとんどなくても、リポジトリ間の移動、バグの根本原因の特定、修正の提案とテストを簡単に行うことができます。GitHub でのこの効率化されたオープンソース コラボレーションにより、開発者が協力して高品質のソフトウェアを作成、テスト、ビルドし、出荷できるので、イノベーションをより迅速に実現できます。また、.NET Engineering Services チームはスタック全体にわたってインフラストラクチャの変更を行うことができるため、開発者がすべてのリポジトリでより迅速かつ効率的に利用できるツールの改善を実現できます。

チームの取り組みと意思決定について詳しく見ていきましょう。

物語を全部読む