Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

GitHub Actions で、あるステップが失敗した時だけ実行するステップを定義する

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 }}"

ちょっと解説

やることは主に下記の

  1. あるステップが失敗した時だけ〜 に当たるあるステップに id を振る
  2. 失敗した時だけ実行するステップ を定義して、 if: failure() で以前の step が失敗した時だけ実行するようにする
  3. steps.<job_id>.outcome で step の実行結果が取得できるので、 if の条件に追加する

サンプル

https://github.com/t0yohei/exec-step-when-another-step-failed-sample

参考

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

t0yohei
Rails/IoT/C#
crowdworks
21世紀の新しいワークスタイルを提供する日本最大級のクラウドソーシング「クラウドワークス」のエンジニアチームです!
https://crowdworks.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away