Azure Pipelines を使用する Visual Studio Code
2018年9月12日 João Moreno, @joaomoreno
Visual Studio Code チームの開発者としての私の責任の一つは、ビルドと継続的インテグレーション (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は大規模なコントリビューションを処理するもう一つの重要な部分です。
ごく最近まで、私たちはパブリック継続的インテグレーションのために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