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年間の期間を考えると、1日あたり平均約3件のPRがあったことになります。この規模のコントリビューションを処理するための十分な準備をすることは、プロジェクト開発を健全に保つだけでなく、他のオープンソースプロジェクトにこの規模でどのように運用できるかの例を示す上でも重要です。これを行う方法の一部は、PRエクスペリエンスをエディターに統合することでワークフローを合理化することですが、CIも大規模なコントリビューションを処理する上で重要なもう1つの部分です。
ごく最近まで、私たちはパブリックな継続的インテグレーションのためにOSSコミュニティのデフォルトの選択肢に依存していました。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