GitHub Actions で失敗した時も step を実行する

今日ふと下記のようなことを思った。

たしかに workflow_run を使えばワークフローが失敗した時に任意のstepは実行できそう。

docs.github.com

この方法だとワークフローが別れてしまうので、あまりスッキリしない。
すると下記のような返信をいただいたので試してみた。

下記のようなワークフローを用意して実行する。
failure()以外にも失敗しても成功しても実行するalways()も指定している。

name: Failure Sample
on: [push]
jobs:
  failure:
    name: Failure
    runs-on: ubuntu-latest
    steps:
      - run: datee # typo

      - run: echo "successが呼ばれた"
        if: ${{ success() }}

      - run: echo "failureが呼ばれた"
        if: ${{ failure() }}

      - run: echo "alwaysが呼ばれた"
        if: ${{ always() }}

結果としては failure(), always() を指定した step が失敗しても実行された。

f:id:hatappi1225:20200922002451p:plain

なるほど〜〜便利