新しい Azure Pipelines ユーザー向けの主要な概念

Azure DevOps Services

Azure Pipelines を構成する主要な概念とコンポーネントについて説明します。 パイプラインの基本的な用語とパーツを理解すると、コードをより効率的に構築、テスト、デプロイできるようになります。

重要な概念の概要

主要な概念のグラフィック

  • トリガーは、実行するようパイプラインに指示します。
  • パイプラインは、1 つ以上のステージで構成されます。 パイプラインは、1 つ以上の環境にデプロイできます。
  • ステージは、パイプライン内のジョブを整理する方法であり、各ステージに 1 つ以上のジョブを含めることができます。
  • ジョブは、1 つのエージェント上で実行されます。 ジョブはエージェントレスにすることもできます。
  • エージェントごとに、1 つ以上のステップを含むジョブが実行されます。
  • ステップタスクにすることも、スクリプトにすることもできます。また、パイプラインの最小構成要素になります。
  • タスクは、REST API の呼び出しやビルド成果物の発行などのアクションを実行するためにパッケージ化されたスクリプトです。
  • 成果物は、実行によって発行されるファイルまたはパッケージのコレクションです。

Azure Pipelines の用語

エージェント

ビルドまたはデプロイが実行されると、システムによって 1 つ以上のジョブが開始されます。 エージェントは、一度に 1 つのジョブを実行するエージェント ソフトウェアがインストールされたコンピューティング インフラストラクチャです。 たとえば、ジョブは Microsoft でホストされる Ubuntu エージェントで実行できます。

さまざまな種類のエージェントとその使用方法の詳細については、「Azure Pipelines エージェント」を参照してください。

承認

承認では、デプロイを実行する前に必要な一連の検証を定義します。 手動承認は、運用環境へのデプロイを制御するために実行される一般的なチェックです。 環境でチェックが構成されていると、パイプライン実行は、すべてのチェックが正常に完了するまで停止します。

アーティファクト

成果物は、実行によって発行されるファイルまたはパッケージのコレクションです。 成果物は、配布やデプロイなどの後続のタスクで使用できます。 詳細については、zure Pipelines の成果物に関するページを参照してください。

継続的デリバリー

継続的デリバリー (CD) は、コードがビルドされてテストされ、1 つ以上のテストおよび運用ステージにデプロイされるプロセスです。 複数のステージで配置とテストを行うことで、品質を向上させることができます。 継続的インテグレーション システムにより、インフラストラクチャやアプリなど、配置可能な成果物が生成されます。 自動化されたリリース パイプラインでは、これらの成果物を利用して、新バージョンや修正プログラムを既存のシステムにリリースします。 全体的な CD プロセスの可視性を高めるために、監視とアラートのシステムは常に稼働します。 このプロセスにより、エラーが頻繁にかつ早期に検出されます。

継続的インテグレーション

継続的インテグレーション (CI) は、開発チームがコードのテストとビルドを簡略化するために使う手法です。 CI は、簡単かつ短時間で修正できる開発サイクルの初期段階でバグや問題を検出するのに役立ちます。 CI プロセスの一環として、自動化されたテストとビルドが実行されます。 このプロセスは、スケジュールを設定して、コードがプッシュされるたびに、またはその両方で実行できます。 成果物と呼ばれる項目は、CI システムから生成されます。 これらは、自動デプロイを推進するために継続的デリバリーのリリース パイプラインによって使用されます。

展開

クラシック パイプラインの場合、デプロイは、1 つのステージに対してタスクを実行するアクションを指します。 これには、自動テストの実行、ビルド成果物のデプロイ、そのステージに指定されている他のあらゆるアクションが含まれます。

YAML パイプラインの場合、デプロイは、デプロイ ジョブを指します。 デプロイ ジョブは、環境に対して順番に実行される手順のコレクションです。 デプロイ ジョブには、1 回実行、ローリング、カナリアなどの戦略を使用できます。

デプロイ グループ

デプロイ グループは、それぞれにエージェントがインストールされているデプロイ ターゲット マシンの論理セットです。 デプロイ グループはエージェント プールと同じように、エージェントの別のグループにすぎません。 デプロイ グループを使用して、ジョブのパイプラインでデプロイ ターゲットを設定できます。 デプロイ グループのエージェントのプロビジョニングの詳細については、こちらを参照してください。

環境

環境とは、アプリケーションをデプロイするリソースのコレクションです。 1 つの環境には、1 つ以上の仮想マシン、コンテナー、Web アプリ、またはサービスを含めることができます。 ビルドが完了してテストが実行された後に、パイプラインによって 1 つ以上の環境にアプリがデプロイされます。

ジョブ

ステージには、1 つ以上のジョブが含まれます。 各ジョブは、1 つのエージェント上で実行されます。 ジョブは、一連のステップの実行境界を表します。 すべてのステップは、同じエージェント上で一緒に実行されます。 ジョブは、さまざまな環境で一連の手順を実行する場合に最も便利です。 たとえば、x86 と x64 の 2 つの構成をビルドする場合があります。 この場合、1 つのステージと 2 つのジョブがあります。 1 つのジョブは x86 用で、もう 1 つのジョブは x64 用です。

エージェントレス ジョブは、エージェントを使用せずに Azure DevOps または Azure DevOps Server で実行されます。 エージェントレス ジョブをサポートするタスクの数は限られています

パイプライン

パイプラインには、アプリの継続的インテグレーションと配置プロセスを定義します。 パイプラインは、1 つ以上のステージで構成されます。 これは、テスト、ビルド、デプロイの各ステップの実行方法を定義するワークフローと考えることができます。

クラシック パイプラインの場合、パイプラインは定義と呼ばれることもあります。

リリース

クラシック パイプラインの場合、リリースは、パイプラインで指定された、バージョン管理された成果物のセットを指します。 このリリースには、ステージ、タスク、ポリシー (トリガーや承認者など)、デプロイ オプションなど、リリース パイプライン内のすべてのタスクとアクションを実行するために必要なすべての情報のスナップショットが含まれます。 リリースは、デプロイ トリガーを使用して、または REST API を使用して手動で作成できます。

YAML パイプラインの場合、ビルド ステージとリリース ステージは 1 つのマルチステージ パイプラインにあります。

実行

実行は、パイプラインの 1 つの実行を表します。 ステップの実行に関連するログや、テストの実行結果が収集されます。 実行中、Azure Pipelines は最初にパイプラインを処理し、その実行を 1 つ以上のエージェントに送信します。 各エージェントはジョブを実行します。 パイプラインの実行シーケンスの詳細については、こちらを参照してください。

クラシック パイプラインの場合、1 回のビルドはパイプラインの実行 1 回を表します。

スクリプト

スクリプトは、コマンドライン、PowerShell、または Bash を使用して、パイプラインのステップとしてコードを実行します。 macOS、Linux、Windows 用のクロスプラットフォーム スクリプトを記述できます。 タスクとは異なり、スクリプトはパイプラインに固有のカスタム コードです。

段階

ステージとは、パイプラインの論理的な境界です。 懸念事項の分離 (ビルド、QA、運用など) をわかりやすく目立たせるために使用できます。 各ステージには、1 つ以上のジョブが含まれます。 パイプラインで複数のステージを定義すると、既定では 1 つずつ実行されます。 ステージの実行時の条件を指定できます。 ステージが必要かどうかを検討する場合は、次の点を確認してください。

  • このパイプラインのさまざまな部分は、個別のグループによって管理されますか。 たとえば、テストに関連するジョブを管理するテスト マネージャーと、運用デプロイに関連するジョブを管理する別のマネージャーを立てることがあります。 この場合は、テストと運用のために別々のステージを用意することが理にかなっています。
  • 特定のジョブまたはジョブ セットに結び付けられている承認のセットはありますか。 その場合は、ステージを使用して、承認を必要とする論理グループにジョブを分割できます。
  • 実行時間が長くなるジョブはありますか。 パイプライン内の 1 つのジョブで実行時間が長くなる場合、そのジョブを独立したステージに分割することは合理的です。

手順

ステップは、パイプラインの最小の構成要素です。 たとえば、パイプラインは、ビルド タスクとテスト タスクで構成される場合があります。 ステップには、スクリプトまたはタスクを指定できます。 タスクは、利便性を考慮して事前に作成されるスクリプトです。 使用可能なタスクを表示する方法については、ビルド タスクとリリース タスクに関する参照資料をご覧ください。 カスタム タスクの作成の詳細については、カスタム タスクの作成に関するページを参照してください。

タスク

タスクは、パイプラインで自動化を定義するための構成ブロックです。 タスクは、一連の入力で抽象化された、パッケージ化されたスクリプトまたはプロシージャです。

トリガー

トリガーは、実行するタイミングをパイプラインに指示するために設定されるものです。 スケジュールした時間にリポジトリにプッシュしたときや、別のビルドが完了したときに実行されるようにパイプラインを構成できます。 これらのアクションはすべてトリガーと呼ばれます。 詳細については、ビルド トリガーリリース トリガーに関するページを参照してください。

ライブラリ

ライブラリには、セキュア ファイル変数グループが含まれています。 セキュア ファイルは、ファイルを格納し、パイプライン間で共有する方法です。 たとえば、異なるパイプラインで同じファイルを参照することもできます。 その場合は、ライブラリ内にファイルを保存し、必要なときにそのファイルを使用できます。 変数グループには、YAML パイプラインに渡すか、複数のパイプラインで使用できるようにする可能性がある値とシークレットが格納されます。

著者について

  • Dave Jarvis は、主要な概念の概要グラフィックに貢献しました。