Azure Pipelines を使用した Visual Studio Code
2018 年 9 月 12 日 João Moreno、@joaomoreno
Visual Studio Code チームの開発者としての私の責任の 1 つは、ビルドおよび継続的インテグレーション (CI) インフラストラクチャを維持および改善することです。Azure Pipelines の最新の機能発表を考えると、Visual Studio Code チームは、開発者とユーザーの両方により良いコラボレーションプラットフォームを提供するために、Microsoft のテクノロジーを活用する方法を劇的に変更しました。このブログ投稿では、Visual Studio Code の歴史について少し説明し、CI プロセスとツール、そしてそれらが時間の経過とともにどのように変化したかに焦点を当てます。
Visual Studio Code エンジニアリング
他のオープンソースプロジェクトと同様に、可能な限り多くのコード貢献を受け取り、トリアージし、対処するための適切なツールと機能が必要です。これは、ユーザー自身が開発者である開発ツール業界において特に当てはまります。彼らは情熱的で、勤勉で、非常に有能なグループです。このブログ投稿の執筆時点で、私たちは148 のオープンな PR と 3,482 のクローズされた PR を抱えており、これまでのプロジェクト期間 3 年間で平均約 3 PR/日となります。プロジェクト開発を健全に保つだけでなく、他のオープンソースプロジェクトにこの規模で運用する方法の例を示すためにも、この規模の貢献を処理するための十分な準備が重要です。これを行う方法の一部は、PR エクスペリエンスをエディタに持ち込むことでワークフローを合理化することですが、CI は大規模な貢献を処理するもう 1 つの重要な部分です。
ごく最近まで、私たちはオープンソースコミュニティのパブリック継続的インテグレーションのデフォルトの選択肢に依存していました。Linux および macOS ビルドにはTravis CI、Windows にはAppVeyor です。さらに、詳細なテストカバレッジレポートを提供するためにCoveralls を使用していました。これらのサービスは、パブリックリポジトリの PR およびコードブランチの品質レポートを提供します。これは、コンパイルを自動化し、コード衛生チェックを実行し、複数のテストスイートを実行するため、大量の貢献がある分散チームで品質を維持するために不可欠です。このサービスの組み合わせには、それぞれ独自の特殊なファイル形式、構文、癖、制限などを持つ少なくとも 3 つの異なるシステムの理解とメンテナンスが必要です。
Azure Pipelines の導入
今年の初めに、Azure Pipelines (当時は Visual Studio Team Services) チームから、新しいものを試してみないかと連絡がありました。この発表は、より合理化された継続的インテグレーションソリューションへの移行を示しています。私たちのビルドは現在、すべてのプラットフォームで同時に実行されています。ぜひ確認してください。
移行を完了するためには、多くのクールなことが必要でした。分解してみましょう。
- Azure Pipelines のパブリックプロジェクトのサポートにより、すべての継続的インテグレーションビルドが実行される公開 Visual Studio Code プロジェクトを実行できます。
- Azure Pipelines のビルドエージェントは、Windows、macOS、Linux プラットフォームのサポートを長らく行ってきました。
- Azure Pipelines で macOS、Linux、Windows を実行するMicrosoft ホスト型エージェントは、ビルドマシンのメンテナンスを気にすることなくプロジェクトをビルドするための優れたソフトウェアスタックを提供します。
- YAML CI を使用すると、プロジェクトのソースの近くに保持される YAML 定義を作成できます(Visual Studio Code は優れた拡張機能を提供しています)。
これらすべてを組み合わせることで、ついに単一の CI ソリューションに集中できるようになりました。Azure Pipelines での Visual Studio Code のビルドは、コンパイル、衛生チェック、テストスイートを単一のビルドで実行し、ビルドを異なるプラットフォームに自動的に分散させます。Microsoft ホスト型ビルドエージェントを使用しているため、それらのマシンのメンテナンスを心配する必要はありません。
サードパーティ統合
Azure Pipelines は GitHub 統合も提供しており、GitHub プロジェクトページ、特にプルリクエストでビルド結果のインジケーターが表示されます。
また、Azure Pipeline の REST API にフックし、ビルドが失敗したときに内部チャットに通知を提供するチャットボットも構築しました。
今後の展望
私の次のタスクは、以前のツールミックスよりも優れたエンドツーエンドの CI フローを実現するために、コードカバレッジレポートを活用することです。
Azure Pipelines への移行は、私たちにとって大きな成功を収めました。ビルドが分散されなくなったため、コード全体の品質をより簡単に把握できるようになりました。また、ビルド定義ファイルの数と形式も統合しました。この変更に非常に満足しており、Azure Pipelines の将来に期待しています。
パブリックプロジェクトと Azure Pipelines について詳しく知りたい場合は、彼らのブログ投稿をご覧ください。
Visual Studio Code を試してみませんか?お好みのプラットフォーム用に今すぐダウンロードしてください。そして、私たちのように常に最新かつ最高のものを実行したい場合は、毎日ビルドされる Insider リリースを入手してください。単に連絡を取りたい、または連絡を取り続けたいですか?Twitter で@code をフォローしてください。
VS Codeチームを代表して: ハッピーコーディング!
João Moreno、@joaomoreno