GitHub Actions で「Workflow does not have 'workflow_dispatch' trigger」
ワークフローを REST API や gh workflow run、それを使う道具で手で始めたら、GitHub が HTTP 422 とこの文で答えた、という場面です。GitHub が読むのは、始めるブランチかタグ(ref)にあるワークフローのファイルで、その版の on: に workflow_dispatch がありません。いま見ている版(多くは既定のブランチの版)には、ちゃんと書いてあることもあります。
この文がどこから出るか
- REST API:
POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches。refは必須で(「The git reference for the workflow. The reference can be a branch or tag name.」)、ほかにinputs。GitHub の文書は「ワークフローを workflow_dispatch のイベントで動くように設定しておく必要がある」と書いています(Create a workflow dispatch event)。 - GitHub CLI:
gh workflow run release.ymlは、既定のブランチ(--refを付ければそのブランチかタグ)でこのリクエストを送り、GitHub の答えをそのまま出します:could not create workflow dispatch event: HTTP 422: Workflow does not have 'workflow_dispatch' trigger(続けてリクエストのアドレス)。ワークフローの名前を付けずにターミナルで走らせると、gh は先にその ref のファイルを読み、自分の言葉で止まります:unable to manually run a workflow without a workflow_dispatch event。どちらも gh のソース(pkg/cmd/workflow/run/run.go)にあります。
ファイルにトリガーがない理由と直し方
- トリガーが別のブランチにある。gh は
--refがないと既定のブランチで始めるので、作業ブランチで足してまだマージしていないトリガーはそこにありません。トリガーのあるところで始めるか(gh workflow run release.yml --ref my-branch、リクエストなら"ref": "my-branch")、トリガーをマージします。逆もあります:既定のブランチにはあって、始めた古いブランチやタグにはない。 - 既定のブランチにまだない。GitHub の文書:「This event will only trigger a workflow run if the workflow file exists on the default branch.」github.com の Run workflow のボタンも、既定のブランチのファイルにトリガーがあるときだけ出ます。また「一度でも動いたワークフローは、API や GitHub CLI でどのブランチやタグでも始められる」とあります(Events that trigger workflows)。
- GitHub が探す場所に書いていない。ファイルの一番上の
on:の下のイベントの1つでなければなりません:on: workflow_dispatch、on: [push, workflow_dispatch]、またはon:の1段下にworkflow_dispatch:。push:の下に字下げしたり、on:と並べて一番上に書いたりすると、トリガーになりません。 - GitHub がファイルを読み直していない。ある報告(2026年5月25日・フォークを作り直したリポジトリ)では、トリガーがあるのにこの答えが返り、ワークフローの一覧には
name:ではなくファイルのパス(.github/workflows/release.yml)が出ていました。ワークフローの無効化と有効化では直らず、ファイルのコメントを1つ変えたコミットで直りました(そのプルリク)。1件の報告で、文書にある動きではありません。
GitHub が読む版の確かめ方
# 始めるブランチかタグにある、ワークフローのファイル gh api 'repos/<owner>/<repo>/contents/.github/workflows/release.yml?ref=my-branch' \ -H 'Accept: application/vnd.github.raw+json' # GitHub が知っているワークフロー:id・名前・パス・状態 gh api repos/<owner>/<repo>/actions/workflows \ --jq '.workflows[] | [.id, .name, .path, .state] | @tsv'
1つ目で on: の下に workflow_dispatch がなければ、直し方は上の1〜3のどれかです。あるのに、2つ目でそのワークフローが名前ではなくパスで出ていたら、4です。
IntelliJ IDEA などの JetBrains IDE からワークフローを始める
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップ・ログつきで IDE のツールウィンドウに並べます。ワークフローを実行は、チェックアウトしているブランチ(なければ既定のブランチ)で各ワークフローのファイルを読み、そこに workflow_dispatch があるものだけを、入力ごとの欄つきで出します。別のブランチやタグを選ぶとそこでファイルを読み直し、トリガーがなければ、何かを始める前に「my-branch では、このワークフローに workflow_dispatch がありません。」と出します。実行とログを見るのは無料、再実行・取り消し・ワークフローの実行・デプロイの承認は Pro(月 US$1.50・30日間の試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・JetBrains のいずれとも提携しておらず、後援や承認も受けていません。
ほかに:「created over a month ago」:ワークフローをもう一度動かす · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English