🚴

GitHub workflow dispatchをデフォルトブランチ以外で実行する

2023/08/28に公開

GitHub Actions(GHA)のworkflow dispatchは普段使っていますか。
私はあまり使っていません。
そのため、workflow dispatchを追加する際の動作確認に少しハマったので実施方法をまとめます。

TL;DR

workflow dispatchとは

workflowを手動でトリガーできるようにするためのものです。詳しくはGitHub Docsをご確認ください。
ref: https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch

動作確認方法

pull_requestと異なりPRを作成しただけでは追加したworkflow dispatchが動作しません。
また、Web browserからの起動はデフォルトブランチにworkflow fileが存在しないと実行できないため、GitHub CLIでworkflowを実行する必要があります。

https://github.com/EigoOda/zenn で試してみます。

まずは、dispatch workflowの作成です。以下の様なworkflow fileをcommitし、pushします。
add-workflow-dispatch というbranchで作業します。

name: workflow dispatch
on:
  push:
    branches:
      - add-workflow-dispatch
  workflow_dispatch: {}

jobs:
  hello:
    runs-on: ubuntu-latest
    steps:
      - name: hello
        run: "echo Hello"

GitHubのActionsに"workflow dispatch"を認識させる必要があるので、on.pushも設定し一度workflowを動作させます。
実際に実行されてしまうので、最初は実行しても問題ないJobを動かすのが良いです。commit

on.pushを設定しない場合、workflowが実行されないため、Actionsには"workflow dispatch"が存在せず実行できません。

GitHub CLIも同様に対象のworklfowが存在しないと返ってきます。

$ gh workflow run "workflow-dispatch" --ref add-workflow-dispatch

could not find any workflows named workflow-dispatch

実際にworkflowを実行し、確認していきたいと思いますが、pushしたworkflowが動作すれば準備はOKです。

on.pushを削除し、GitHub CLIからworkflow dispatchを実行してみます。commit

デフォルトブランチにマージしないとWeb browserから実行できないので、今回はCLIでworkflowを実行してみます。

$ gh workflow run "workflow dispatch" --ref add-workflow-dispatch
✓ Created workflow_dispatch event for worklfow-dispatch.yaml at add-workflow-dispatch

To see runs for this workflow, try: gh run list --workflow=worklfow-dispatch.yaml

CLIで実行できることが確認できたので、workflowの状態を確認します。

$ gh run list --workflow=worklfow-dispatch.yaml
STATUS  TITLE                  WORKFLOW           BRANCH                 EVENT              ID          ELAPSED  AGE
✓       workflow dispatch      workflow dispatch  add-workflow-dispatch  workflow_dispatch  5997350385  11s      2m
✓       Add worklfow dispatch  workflow dispatch  add-workflow-dispatch  push               5996858772  12s      55m

状態の確認については、Web browserからも確認可能です。

いかがだったでしょうか、デフォルトブランチにpushしなくてもworkflow_dispatchを動作させることができました。
いままではdefault branchを変更してworkflow dispatchを実行してたりしましたが、安心して動作確認できるようになりました。

GitHubで編集を提案

Discussion