0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Pipelines のステージ、ジョブおよびステップの実行順序

Posted at

Azure Pipelines の依存関係(dependsOn)を色々といじくって、挙動を確認します。
基本的に、依存関係(dependsOn)は明示してあげるのが良さそうです。

前提

  • YAMLパイプラインを対象とします。
  • 2024/5時点の確認結果となります。

まとめ

項目 dependsOn未指定 dependsOnを明示的に指定 dependOnを空にする
ステージ(stages) YAMLの記載順序で実行される dependsOnに指定したステージの実行終了を待つ バラバラに実行される
ジョブ(jobs) バラバラに実行される dependsOnに指定したジョブの実行終了を待つ バラバラに実行される
ステップ(steps) YAMLの記載順序で実行される
※dependsOnは指定できない
N/A
※dependsOnは指定できない
N/A
※dependsOnは指定できない

ステージ(stages)

何も指定しなかった場合

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1"; sleep 1; exit $(( RANDOM % 2))

- stage: Stage_2
  jobs:
  - job: Job_2
    steps:
    - bash: echo "step 2-1"; sleep 1; exit $(( RANDOM % 2))

- stage: Stage_3
  jobs:
  - job: Job_3
    steps:
    - bash: echo "step 3-1"; sleep 1; exit $(( RANDOM % 2))

- stage: Stage_4
  jobs:
  - job: Job_4
    steps:
    - bash: echo "step 4-1"; sleep 1; exit $(( RANDOM % 2))
  • 記載されている順序で実行される。
  • 前のステージ内のジョブがエラー終了となった場合、後続のステージは実行されない。
  • エラーとなったジョブを再実行し、正常終了した場合、後続のステージも実行される。

依存関係を空にした場合

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1"; sleep 1; exit 0

- stage: Stage_2
  dependsOn: []
  jobs:
  - job: Job_2
    steps:
    - bash: echo "step 2-1"; sleep 1; exit 0

- stage: Stage_3
  dependsOn: []
  jobs:
  - job: Job_3
    steps:
    - bash: echo "step 3-1"; sleep 1; exit 0

- stage: Stage_4
  dependsOn: []
  jobs:
  - job: Job_4
    steps:
    - bash: echo "step 4-1"; sleep 1; exit 0
  • 実行順序は不定。
  • いずれかのステージ内のジョブがエラー終了となった場合でも、他のステージは実行される。

依存関係を明示した場合

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1"; sleep 1; exit 0

- stage: Stage_2
  dependsOn:
  - Stage_1
  jobs:
  - job: Job_2
    steps:
    - bash: echo "step 2-1"; sleep 1; exit 0

- stage: Stage_3
  dependsOn:
  - Stage_1
  jobs:
  - job: Job_3
    steps:
    - bash: echo "step 3-1"; sleep 1; exit 0

- stage: Stage_4
  dependsOn:
  - Stage_2
  - Stage_3
  jobs:
  - job: Job_4
    steps:
    - bash: echo "step 4-1"; sleep 1; exit 0
  • 依存関係(dpendsOnに指定されたステージ)の実行後に実行される。

  • 前のステージ内のジョブがエラー終了となった場合、後続のステージは実行されない。
    (例: Stage_1がエラーとなった場合、Stage_3および4は実行されない。)

  • 前のステージ内のジョブがエラー終了となった場合、後続のステージは実行されない。

ジョブ(jobs)

何も指定しなかった場合

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_2
    steps:
    - bash: echo "step 1-2-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_3
    steps:
    - bash: echo "step 1-3-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_4
    steps:
    - bash: echo "step 1-4-1"; sleep 1; exit $(( RANDOM % 2))

  • 実行順序は不定。
  • いずれかのジョブがエラー終了となった場合でも、他のジョブは実行される。

依存関係を空にした場合

未指定時と同じ。

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_2
    dependsOn: []
    steps:
    - bash: echo "step 1-2-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_3
    dependsOn: []
    steps:
    - bash: echo "step 1-3-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_4
    dependsOn: []
    steps:
    - bash: echo "step 1-4-1"; sleep 1; exit $(( RANDOM % 2))

依存関係を明示した場合

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_2
    dependsOn: 
    - Job_1
    steps:
    - bash: echo "step 1-2-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_3
    dependsOn: 
    - Job_1
    steps:
    - bash: echo "step 1-3-1"; sleep 1; exit $(( RANDOM % 2))

  - job: Job_4
    dependsOn:
    - Job_2
    - Job_3
    steps:
    - bash: echo "step 1-4-1"; sleep 1; exit $(( RANDOM % 2))
  • 依存関係(dpendsOnに指定されたジョブ)の実行後に実行される。
  • 前のジョブがエラー終了となった場合、後続のジョブは実行されない。
    (例: Job_2がエラーとなった場合、Job_4は実行されない。)

ステップ(steps)

依存関係(dependOn)はない

YAML
azure-pipeline.yaml
trigger: none

pool:
  vmImage: ubuntu-latest

stages:
- stage: Stage_1
  jobs:
  - job: Job_1
    steps:
    - bash: echo "step 1-1"; sleep 1; exit $(( RANDOM % 2))
    - bash: echo "step 1-2"; sleep 1; exit $(( RANDOM % 2))
    - bash: echo "step 1-3"; sleep 1; exit $(( RANDOM % 2))
    - bash: echo "step 1-4"; sleep 1; exit $(( RANDOM % 2))

  • 記載されている順序で実行される。
  • 前のステップがエラー終了となった場合、後続のステップは実行されない。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?