💨
GitHub Actionsのworkflow_runトリガーを試してみる
はじめに
GitHub Actionsのワークフローのトリガーイベントの、「workflow_run」 を試してみました。
※イメージ
想定されるユースケース
- 単純に、ワークフローを簡素化するために依存する処理を別のワークフローに分割する
- 複数のワークフローに共通する処理を別の一つのワークフローに共通化して、それぞれから呼び出すようにすれば、ワークフローを簡潔化できたり、保守しやすくする
基本的な使い方
トリガーとなるワークフロー
name: Run Build
on:
workflow_dispatch:
jobs:
run-build:
runs-on: ubuntu-latest
steps:
- name: Run Build
run: |
echo "Run Build"
workflow_run で呼び出されるワークフロー
name: Run Tests
on:
workflow_run:
workflows: [Run Build]
types:
- completed
jobs:
run-test:
runs-on: ubuntu-latest
steps:
- name: Run Test
run: |
echo "Run Test"
複数のワークフローをトリガーに指定する
workflow_runイベントに複数のワークフローを指定する場合、どれか一つのトリガーワークフローが実行されれば、ワークフローが実行されます。
on:
workflow_run:
workflows: [Staging, Production]
types:
- completed
トリガーワークフローの結果を取得してワークフローのstep実行を判断する
トリガーワークフローの結果に関係なくワークフローが実行されてしまう仕様のようなので、
トリガーワークフローの結果を参照して処理を分岐する必要があります。
${{ github.event.workflow_run.conclusion }}
これで取得できるようです。
name: Run Tests
on:
workflow_run:
workflows: [Run Build]
types:
- completed
jobs:
run-test:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Run Test
run: |
echo "Run Test"
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- name: failure
run: |
echo "trigger build workflow failed"
トリガーワークフローが成功したときに、run-testジョブだけが実行される
参考
Discussion