GitHub Actions で あるステップが失敗した時だけ実行するステップ
を定義したいんだけど、ってことがありました。
具体的に言うと、フロントエンドのテストに失敗した時だけ、スクショを artifact として残しておいて、後からスクショを確認したいとか(例えばです)。
そんな時にどうしたらいいかが、あんまり調べてもなかなか出てこなかったので書いてみます。
結論
結論から言うとこうする
- name: fail step
id: fail_step
run: exit 1
- name: run if fail_step failed
if: failure() && steps.fail_step.outcome == 'failure'
run: echo "${{ steps.fail_step.outcome }}"
ちょっと解説
やることは主に下記の
-
あるステップが失敗した時だけ〜
に当たるあるステップにid
を振る -
失敗した時だけ実行するステップ
を定義して、if: failure()
で以前の step が失敗した時だけ実行するようにする -
steps.<job_id>.outcome
で step の実行結果が取得できるので、 if の条件に追加する
サンプル
参考
https://help.github.com/ja/actions/reference/workflow-syntax-for-github-actions
https://help.github.com/ja/actions/reference/context-and-expression-syntax-for-github-actions#job-status-check-functions