ナビゲーションをスキップする

.NET インフラストラクチャ チームが整合性に投資してオープンソースのイノベーションを加速

GitHub リポジトリの共有ツールと単一の共有 CI システムによって、開発者の生産性を大幅に向上させる方法をご覧ください。

物語を全部読む

課題: オープンソース貢献者のコラボレーションの効率化

オープンな開発と共同作業を通じて革新を促進するために創設された独立した組織である .NET Foundation は、.NET Core を含め、大規模で複雑なオープンソース プロジェクトのセットをサポートしています。Microsoft .NET Engineering Services チームがこのプロジェクトに貢献し、世界中の共同作成者が一緒に作業できるようにするインフラストラクチャの多くを担当しています。

GitHub 上の多数の異なる Git リポジトリ、広範なツール、いくつかの異なる継続的インテグレーション (CI) システムがプロジェクト全体で使用されているため、生産性の妨げとなる混乱が多く発生しました。プロジェクトの途方もないスケールが、複雑さに輪を掛けました。たとえば、Roslyn (C# コンパイラ) リポジトリだけで、pull request の 1 回のイテレーションに対して 600,000 件を超える自動テストが実行されます。週に 50 件を超える pull request があり、それぞれ複数のイテレーションが含まれるため、CI テストの数は数十億に達します。CoreFx (ライブラリ) の場合、この数値がさらに大きくなります。.NET Engineering Services チームは、.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?"

.NET Engineering Services、プリンシパル ソフトウェア エンジニア、Matt Mitchell

共有ツールと単一の CI システムによる生産性の向上

開発者がソフトウェア スタックのさまざまな部分の間を簡単に移動できるようにするため、.NET Engineering Services チームは、すべてのリポジトリを共通のディレクトリ構造、コマンドのセット、およびビルドとテストのロジックの下に置くことに取り組みました。チームは、生産性に対するさらなる障壁を解消するため、既存のすべてのワークフローを異なる CI システムから Azure Pipelines 内の 1 つのシステムに移動しました。システムはフル マネージドであるため、CI サーバー インフラストラクチャを管理するという重荷がなくなりました。チームは現在、GitHub に格納されている YAML ファイルを使用してコードとしての構成を実践しており、すべての場所で YAML パイプラインが使用されています。以前は一部のリポジトリで CI が直列で実行されていたため、開発者は時にはコードのイテレーションの間に 2 時間または 3 時間待機する必要がありましたが、今ではすべての 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."

.NET Engineering Services、プリンシパル ソフトウェア エンジニア、Matt Mitchell

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

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

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

物語を全部読む
どのようなご用件ですか?