Visual Studio Code での Azure Pipelines の利用

2018年9月12日 João Moreno, @joaomoreno

Visual Studio Code チームの開発者としての私の責任の一つは、私たちのビルドおよび継続的インテグレーション (CI) インフラストラクチャを維持し、改善することです。Azure Pipelines からの最新機能発表を受けて、Visual Studio Code チームは、開発者とユーザーの両方にとってより良いコラボレーションプラットフォームを提供するために、マイクロソフトのテクノロジーをどのように活用するかを劇的に変更しました。このブログ記事では、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) チームから連絡を受け、何か新しいことを試してみることになりました。この発表は、より効率的な継続的インテグレーションソリューションへの移行を示すものです。私たちのビルドは現在、すべてのプラットフォームで同時に実行されています。ぜひご覧ください

VSCode Project Build Page

私たちが移行を行うためには、多くのクールなことが起こる必要がありました。詳しく見ていきましょう。

  1. Azure Pipelines のパブリックプロジェクトのサポートにより、すべての継続的インテグレーションビルドが実行される パブリック向けの Visual Studio Code プロジェクトを実行できます。
  2. Azure Pipelines のビルドエージェントは、Windows、macOS、Linux プラットフォームマトリックスを長年にわたってサポートしてきました。
  3. macOS、Linux、Windows を実行する Azure Pipelines の Microsoft ホスト型エージェントは、ビルドマシンのメンテナンスを気にすることなくプロジェクトをビルドするための優れたソフトウェアスタックを提供します。
  4. YAML CI を使用すると、プロジェクトのソースの近くに保持される YAML 定義を作成できます (Visual Studio Code は優れた拡張機能を提供しています)。

これらすべてを組み合わせることで、ついに単一の CI ソリューションに集中できるようになりました。Azure Pipelines 上の Visual Studio Code ビルドは、コンパイル、衛生チェック、およびテストスイートを単一のビルドで実行し、ビルドをさまざまなプラットフォームに自動的に分散します。Microsoft ホスト型ビルドエージェントを使用しているため、これらのマシンのメンテナンスについて心配する必要はありません。

サードパーティとの統合

Azure Pipelines は GitHub 統合も提供しており、プルリクエストなど、GitHub プロジェクトページ全体にビルド結果インジケーターが表示されます。

Pull Request Integration

また、Azure Pipeline の REST API に接続し、ビルドが失敗した場合に内部チャットに通知を提供するチャットボットも構築しました。

Chat Bot Automation

今後について

私の次のタスクは、以前のツールの組み合わせよりも優れたエンドツーエンドの CI フローを実現するために、コードカバレッジレポートを活用することです。

Azure Pipelines への移行は、私たちにとって大きな成功であることが証明されました。ビルドが至る所に散らばっているわけではないため、全体的なコード品質についてより簡単に理解できるようになりました。また、ビルド定義ファイルの数と形式も統合しました。私たちはこの変更に非常に満足しており、Azure Pipelines の将来に期待しています。


パブリックプロジェクトと Azure Pipelines についてさらに詳しく知りたい場合は、彼らのブログ記事をご覧ください。

Visual Studio Code を試してみませんか? 今すぐお使いのプラットフォーム用にダウンロードしてください。また、私たちと同じように、常に最新かつ最高のものを実行したい場合は、毎日ビルドされる Insider リリースを入手してください。単に連絡を取りたい、または連絡を取り続けたいですか? Twitter で @code をフォローしてください。

VS Code チームを代表して:ハッピーコーディング!

João Moreno, @joaomoreno