目次
workflow_runで別のワークフローのリクエスト、完了をトリガーにワークフローを実行する
workflow_runでリクエスト、完了をトリガーにワークフローを実行する方法についてまとめたので紹介していきます!
ワークフローが完了した際の成功・失敗の条件によって処理を分岐したりもできたので、こちらも紹介していきます!
ドキュメント
サンプルレポジトリ
注意点
業務で使用しているGHES(GitHub Enterprise Server)でも問題なく使用できました!
workflow_runでワークフローを実行する方法
Main Actionを作成
まずはメインのActionを作成し、このActionのリクエスト、完了をトリガーに別のアクションを起動するようにしてみます。
このメインAction自体は、ただのHello Worldです。
.github/workflows/main.yml
name: Main Action
on: workflow_dispatch
jobs:
main:
name: Hello World
runs-on: ubuntu-latest
steps:
- name: Call Hello World
uses: docker://alpine:latest
with:
entrypoint: /bin/echo
args: Hello, World!
Workflow Run Actionを作成
メインActionのリクエスト、完了をトリガーに起動するActionをworkflow_runを使用して作成していきます。
workflow_runの指定方法
指定方法は
- 「workflows」にアクション名を指定
- 「types」には、「requested」や「completed」を指定
のような感じにすればOK。
今回は「types」に両方指定しています。
on:
workflow_run:
workflows:
- Main Action
types:
- requested
- completed
実行条件を指定してみる
workflow_runで実行されたワークフローの条件によって処理を分岐してみました。
- 「On Requested」の時だけ実行したいような時は、「event.workflow_run.conclusion」が空の時に指定しました。
- 「Completed」は成功した時と失敗した時で、「github.event.workflow_run.conclusion == ‘success’」と「github.event.workflow_run.conclusion == ‘failure’」のパターンで分けています。
jobs:
# On Requested
on-requested:
name: On Requested
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == '' }}
steps:
...
# On Success(completed)
on-success:
name: On Success
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
...
# On Failure(completed)
on-failure:
name: On Failure
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
...
ワークフロー全体
以下がワークフロー全体になります。
.github/workflows/workflow_run.yml
name: Workflow Run Action
on:
workflow_run:
workflows:
- Main Action
types:
- requested
- completed
jobs:
# On Requested
on-requested:
name: On Requested
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == '' }}
steps:
- name: Call Hello World
uses: docker://alpine:latest
with:
entrypoint: /bin/echo
args: Hello, World From On Requested!
# On Success(completed)
on-success:
name: On Success
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Call Hello World
uses: docker://alpine:latest
with:
entrypoint: /bin/echo
args: Hello, World From On Success!
# On Failure(completed)
on-failure:
name: On Failure
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- name: Call Hello World
uses: docker://alpine:latest
with:
entrypoint: /bin/echo
args: Hello, World From On Failure!
ワークフローの実行結果
On Requested

On Success(completed)

On Failure(completed)

Workflow Run Action補足
「workflow_run」のworkflowsの部分は、yamlの形式であればどちらでも行けるので、どちらの指定方法でもOK。
on:
workflow_run:
workflows: ["Main Action"]
types:
- requested
- completed
on:
workflow_run:
workflows:
- Main Action
types:
- requested
- completed
まとめ
今回は、workflow_runで別のワークフローのリクエスト、完了をトリガーにワークフローを実行する方法について書きました!
workflow_runでリクエスト、完了をトリガーにワークフローを実行したり、ワークフローが完了した際の成功・失敗の条件によって処理を分岐したりと色々と便利なので、使ってみてください。
コメント