Azure Pipelines とは
Microsoft Azure Pipelines とは、コード プロジェクトを自動的にビルド、テスト、およびデプロイするために使用できるクラウド サービスです。 他のユーザーが使用できるようにすることもでき、ほとんどすべての言語またはプロジェクトの種類で機能します。
Mara は、チームのビルド プロセスを Azure Pipelines でレプリケートすることに興奮しています。 テスト担当者の Amita は、ようやく多少の時間が空いて、追いつきたいと思っています。 Mara は、今が自分の計画について彼女について話す絶好の機会だと考えました。Azure Pipelines を使用して Space Game Web サイトの自動ビルド パイプラインを設定することです。
Amita は、Mara の計画を聞いて少しためらいますが、Mara の計画はビルド プロセスをレプリケートすることであり、それを置き換えることではないため、関心を持ちもします。 彼女は、ビルド プロセスでいくつかの機能強化を使用できることを知っています。
Amita: 興味深い演習のように聞こえますが、DevOps ポイントを証明してもらわないといけません!
Mara: 私のことはとてもよく知っていますよね!
Amita: どのような改善が見られると思いますか? 特に、あなたは私たちが既にやっていることをやろうとしているのですから。
Mara: Azure Pipelines に移行するだけで、多くのメリットが得られると思っています。 Azure Pipelines はクラウド サービスですから。 これを使えば、コードを自動的にビルドしてテストすることができます。 また、他の人も使用できるようになります。 ほぼすべての言語やプロジェクトの種類で機能します。
私たちのビルド サーバーには問題があり、最新の状態に保つことさえ困難です。 Azure Pipelines は Microsoft でホストして管理するビルド サーバーを提供するため、常に最新の修正プログラムとセキュリティ更新プログラムが含まれています。 私たちがビルド サーバーの管理について心配する必要がありません。
また、さまざまな人が記述したあらゆる種類のスクリプトがあります。 私たちがそれらの一部がどのように機能するのかさえ理解していません。 Azure Pipelines には、タスクのカタログが付属しています。 "タスク" は、一連の入力で抽象化された、パッケージ化されたスクリプトまたはプロシージャです。 私はビルド スクリプトの動作をこれらのタスクにマップしてみます。 少なくとも、物事の進め方を標準化し、自動化のレベルを上げることができます。
また、Azure Pipelines は多くのさまざまな言語やアプリの種類で機能します。 その方向性で拡張したい場合に、ツールを変更しなくても済みます。
Amita: 身勝手だとは思いますが、私にどう関係あるのですか? 私の大きな問題の 1 つは、ビルドがいつテストできるようになるか私にはわからないことです。 スプレッドシートを更新することを覚えている人もいますが、多くの場合、忘れてしまいます。 私はわかっているとはとても思えない人間のようです。
Mara: そうです、それは私たちが簡単に修正できるものです。 ビルドの準備ができたら、電子メールか何かの通知を通して、自動的にあなたに通知するようにパイプラインを設定できます。 あなたは、だれかが思い出させてくれるまで待つ必要はありません。
Amita: わかりました。では、今のところあなたの目標は、アプリをビルドして、準備ができたら私に知らせるということですか?
Mara: そうです! もちろん、もっと大きな計画を立てています。 皆さんがこの最初のステップを気に入ると思いますので、それを足掛かりにして、真の継続的インテグレーションを実現したいと思っています。
Amita:私に 5 分で継続的インテグレーションについて説明してください。
Mara: 絵を描いてみましょう。
Mara がホワイトボードに移動し、パイプラインを描きます。
Mara: これは私の CI パイプラインです。 CI は、チームのメンバーがバージョン コントロールに対する変更をコミットするたびに行う、コードのビルドとテストを自動化するプロセスです。 まだ自動テストを行っていないことはわかっていますが、これには時間をかけます。
"パイプライン" は、アプリの継続的インテグレーションのプロセスを定義します。 これは、"タスク" というステップで構成されています。 これは、ビルド、テスト、およびデプロイの各ステップの実行方法を定義するスクリプトと考えることができます。 スクリプトをタスクにマップしてみましょう。
コードの変更 を送信すると、パイプラインが実行されます。 パイプラインは、自動的に実行されるように構成することも、手動で実行することもできます。 パイプラインを、GitHub、Bitbucket、Subversion などのソース リポジトリに接続します。 このスプリントのタスクの 1 つは GitHub の使用を開始することであるため、このプロジェクトでは GitHub を使用します。
"ビルド エージェント" により、コードがビルドまたはデプロイされます。 ビルドまたはデプロイが実行されると、システムによって 1 つ以上のジョブが開始されます。 エージェントは、一度に 1 つのビルドまたはデプロイ ジョブを実行するインストール可能なソフトウェアです。 Azure Pipelines を使用するので、Microsoft ホステッド エージェントを使用できます。 Microsoft ホステッド エージェントを使用すると、メンテナンスとアップグレードが自動的に行われます。 パイプラインを実行するたびに、新しい仮想マシンを取得します。 選択できる仮想マシン イメージは、私たちが使用する Ubuntu 22.04 を含めていくつかあります。
パイプラインの最終成果物は "ビルド成果物" です。 成果物は、アプリをテストまたはデプロイするために必要な最小のコンパイル単位と考えることができます。 たとえば、成果物には次のようなものがあります。
- .jar または .zip ファイルにパッケージ化された Java または .NET アプリ。
- C++ または JavaScript ライブラリ。
- 仮想マシン、クラウド、または Docker イメージ。
これで完了です。 これを実行できることがわかっています。
Amita: すばらしいと思います。 これを機能させるためにあなたがしなければならないことと、あなたにかかる時間を見てみましょう。 あなたはデモをすべて用意できます。
Mara: やりましょう!
ビルド エージェントを管理する
あなたとチームが Azure Pipelines に慣れたところで、ビルド エージェントについてもう少し語りましょう。 ビルド エージェントは、一度に 1 つのビルドまたはデプロイ ジョブを実行するインストール可能なソフトウェアです。 コードをビルドしたり、ソフトウェアをデプロイしたりするには、少なくとも 1 つのエージェントが必要です。 コードや人を追加していくと、最終的には複数のエージェントが必要になります。 エージェントには 2 つのメイン カテゴリがあります。
Microsoft ホステッド エージェントは Microsoft が管理するエージェントであるため、メンテナンスとアップグレードは自動的に行われます。 パイプラインを実行するたびに、パイプラインの各ジョブに対して新しいエージェントが与えられます。 このモジュールでは、Microsoft ホステッド エージェントを使用するローカル開発環境を選択すると、パイプラインを Microsoft ホステッド エージェント上で実行します。 Microsoft ホステッド エージェント上でパイプラインを実行するには、組織に Microsoft ホステッド並列ジョブが少なくとも 1 つ必要です。 Microsoft ホステッド並列ジョブが少なくとも 1 つ存在するよう、Microsoft ホステッド並列ジョブの数を確認してください。 Microsoft ホステッド並列ジョブの数がゼロの場合 (新しい Azure DevOps 組織の並列ジョブ数は一般的にゼロになります)、無料の付与を要請できます。 無料許可の承認プロセスには通常、2 から 3 営業日かかります。
セルフホステッド エージェントは、自分で管理するエージェントです。 エージェント ソフトウェアと目的のツールをインストールして仮想のコンピューターとコンテナーを構成し、エージェントを Azure DevOps に登録します。 このモジュールでは、セルフホステッド エージェントを使用して GitHub Codespaces 開発環境を選択すると、GitHub Codespaces コンテナーでセルフホステッド エージェントが実行されます。 GitHub Codespaces コンテナー上でエージェントをセルフホストすることは一般的な運用シナリオではありませんが、これによって、このトレーニング モジュールを完了するための環境が手に入ります。