ステージ、依存関係、& 条件を追加する

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2015

注意

Microsoft Team Foundation Server (TFS) 2018 以前のバージョンでは、ビルドとリリースの "パイプライン" は "定義"、"実行" は "ビルド"、"サービス接続" は "サービス エンドポイント"、"ステージ" は "環境"、"ジョブ" は "フェーズ" と呼ばれます。

ステージの概念は、YAML パイプラインとクラシックリリースパイプラインのどちらを使用するかによって異なります。

パイプラインジョブをステージにまとめることができます。 ステージは、パイプラインの主要な区分です。 "このアプリをビルドする"、"これらのテストを実行する"、"運用前に展開する" というステージの例があります。 パイプラインの論理的な境界であり、パイプラインを一時停止し、さまざまなチェックを実行できます。

すべてのパイプラインには、明示的に定義していない場合でも、少なくとも1つの段階があります。 また、ステージを依存関係グラフに配置して、1つのステージが別の段階の前に実行されるようにすることもできます。

注意

ステージのサポートは Azure DevOps Server 2019.1 で追加されました。

このバージョンの TFS では YAML はサポートされていません。

ステージの指定

注意

ステージのサポートは Azure DevOps Server 2019.1 で追加されました。

最も単純なケースでは、パイプラインに論理的な境界は必要ありません。 その場合は、キーワードを明示的に使用する必要はありません stage 。 YAML ファイルでジョブを直接指定できます。

# this has one implicit stage and one implicit job
pool:
  vmImage: 'ubuntu-16.04'
steps:
- bash: echo "Hello world"
# this pipeline has one implicit stage
jobs:
- job: A
  steps:
  - bash: echo "A"

- job: B
  steps:
  - bash: echo "B"

パイプラインを複数のステージに分類する場合は、キーワードを使用し stages ます。

stages:
- stage: A
  jobs:
  - job: A1
  - job: A2

- stage: B
  jobs:
  - job: B1
  - job: B2

をステージレベルで指定した場合 pool 、そのステージで定義されているすべてのジョブは、特にジョブレベルで指定されていない限り、そのプールを使用します。

注意

Azure DevOps Server 2019 では、プールはジョブレベルでのみ指定できます。

stages:
- stage: A
  pool: StageAPool
  jobs:
  - job: A1 # will run on "StageAPool" pool based on the pool defined on the stage
  - job: A2 # will run on "JobPool" pool
    pool: JobPool

ステージを指定する完全な構文は次のとおりです。

stages:
- stage: string  # name of the stage, A-Z, a-z, 0-9, and underscore
  displayName: string  # friendly name to display in the UI
  dependsOn: string | [ string ]
  condition: string
  pool: string | pool
  variables: { string: string } | [ variable | variableReference ] 
  jobs: [ job | templateReference]

このバージョンの TFS では、YAML パイプラインはサポートされていません。

依存関係の指定

注意

ステージのサポートは Azure DevOps Server 2019.1 で追加されました。

パイプラインで複数のステージを定義すると、既定では、YAML ファイルで定義した順序で順番に実行されます。 ただし、依存関係を追加する場合は例外です。 依存関係を使用すると、ステージは要件の順序で実行さ dependsOn れます。

パイプラインには、依存関係のないステージが少なくとも1つ含まれている必要があります。

複数のステージとその依存関係を定義するための構文は次のとおりです。

stages:
- stage: string
  dependsOn: string
  condition: string

順次実行されるステージの例を次に示します。

# if you do not use a dependsOn keyword, stages run in the order they are defined
stages:
- stage: QA
  jobs:
  - job:
    ...

- stage: Prod
  jobs:
  - job:
    ...

並列実行されるステージの例を次に示します。

stages:
- stage: FunctionalTest
  jobs:
  - job:
    ...

- stage: AcceptanceTest
  dependsOn: []    # this removes the implicit dependency on previous stage and causes this to run in parallel
  jobs:
  - job:
    ...

ファンアウトとファンの例を次に示します。

stages:
- stage: Test

- stage: DeployUS1
  dependsOn: Test    # this stage runs after Test

- stage: DeployUS2
  dependsOn: Test    # this stage runs in parallel with DeployUS1, after Test

- stage: DeployEurope
  dependsOn:         # this stage runs after DeployUS1 and DeployUS2
  - DeployUS1
  - DeployUS2

このバージョンの TFS では、YAML パイプラインはサポートされていません。

条件

各ステージを実行する条件を指定できます。 既定では、ステージは、他のステージに依存していない場合や、依存しているすべてのステージが完了して成功した場合に実行されます。 前のステージでエラーが発生した場合や、カスタム条件を指定した場合でも、ステージを強制的に実行することによって、この動作をカスタマイズできます。

ステージに対して前の手順の既定の条件をカスタマイズする場合は、完了と成功の条件を削除します。 したがって、カスタム条件を使用する場合は、 and(succeeded(),custom_condition) 前の段階が正常に実行されたかどうかを確認するためにが一般的に使用されます。 それ以外の場合、ステージは、前のステージの結果に関係なく実行されます。

注意

次の例に示すように、failed (' JOBNAME/STAGENAME ') と succeeded (' JOBNAME/STAGENAME ') の条件は、 Yaml パイプラインに対してのみ機能します。

注意

ステージのサポートは Azure DevOps Server 2019.1 で追加されました。

前のステージの実行状態に基づいてステージを実行する例を次に示します。

stages:
- stage: A

# stage B runs if A fails
- stage: B
  condition: failed()

# stage C runs if B succeeds
- stage: C
  dependsOn:
  - A
  - B
  condition: succeeded('B')

カスタム条件の使用例:

stages:
- stage: A

- stage: B
  condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))

このバージョンの TFS では、YAML パイプラインはサポートされていません。

キューポリシーを指定する

YAML パイプラインでは、キューポリシーはサポートされていません。 パイプラインの各実行は、とは独立しており、他の実行は認識されません。 言い換えると、2つの連続したコミットによって2つのパイプラインがトリガーされ、両者が互いを待機することなく、同じステージのシーケンスを実行します。 キューポリシーを YAML パイプラインに導入することをお勧めしますが、このような重要度がある場合は 、手動で 順序を指定して実行順序を制御することをお勧めします。

このバージョンの TFS では、YAML パイプラインはサポートされていません。

承認の指定

承認チェックを使用してステージをいつ実行するかを手動で制御できます。 これは、通常、運用環境への配置を制御するために使用されます。 リソース所有者 は、パイプラインのステージがリソースを使用できるかどうかを制御するために使用できるメカニズムをチェックします。 環境などのリソースの所有者は、そのリソースを使用するステージを開始する前に満たす必要があるチェックを定義できます。

現時点では、手動による承認チェックは環境でサポートされています。 詳細については、「 承認」を参照してください。

このバージョンの Azure DevOps Server の YAML パイプラインでは、承認はまだサポートされていません。

このバージョンの TFS では、YAML パイプラインはサポートされていません。