Azure Pipelines では通常、失敗した後のステップは実行されません。

しかし、クリーンアップ処理のような必ず実行したい処理や、エラーログの転送のような失敗した時だけ実行する処理といったものが必要になることもあります。

また、Variables でフラグを立てたときだけインストールするといった、条件によって実行するステップを設定したくなることもあるかと思います(え、無いですか。。。?)。

この記事では、そんな処理を設定する方法を説明します。

設定方法

  • 設定したい step のオプションに condition を追加します
  • 値には下記が設定できます
    • always() :必ず実行されます。キャンセルや失敗された場合でも実行されます
    • succeded() :前段までの処理が成功した時だけ実行されます
    • failed() :前段までの処理が失敗した時だけ実行されます
    • eq(value1, value2) :二つの値が同じ時だけ実行されます。variables[‘hoge’] の形式で変数を指定することもできます
    • ne(value1, value2) :二つの値が異なる時だけ実行されます。
  • 上記の値を組み合わせることもできます
    • and や or などの演算子を使うことができます
    • 演算子の詳しい情報はドキュメントを参考にしてください
  • Step の他に Job に設定することもできます

設定例

steps:
- script: echo 何かの処理
  displayName: '何かの処理'
- script: false
  displayName: 'エラーを起こす処理'
  condition: ne(variables['isError'], 0) # isError が 0 以外のときだけエラーにする
- script: echo 必ず実行する処理
  condition: always() # このステップはキャンセルされても必ず実行される
  displayName: '必ず実行されるよ'
- script: echo 成功したときだけ実行する処理
  condition: succeeded() # このステップは成功したときだけ実行される
  displayName: '成功したときだけ実行されるよ'
- script: echo 失敗したときだけ実行する処理
  condition: failed() # このステップは失敗したときだけ実行される
  displayName: '失敗したときだけ実行されるよ'

設定例を実行すると下記のような結果になります。 エラー発生後のステップが条件によって、実行されたり、スキップされています。

実行結果
実行結果

参考