Github ActionsのWork Flow(以下WF)実行時には、
デフォルトブランチの「.github/workflows」ディレクトリ配下に設置しているWFファイルが自動的に参照されると思います。
この仕様だと、結構面倒くさいなぁ、と思うケースに出くわすことがあって。
そもそもWFファイルを作成・修正するプルリクエストをデフォルトブランチに向けて出したい時に、
「デフォルトブランチにWFファイルがないとWF自体実行できないので、とりあえずApploveしてください!動作検証はその後で!」
とせざるを得なくて、なんだか気持ち悪かったですが、(WFが上手く動かなかったら手戻りにもなるし…)
workflow_dispatchを使ってWFを手動実行することで、どのブランチにあるWFファイルを使うかを指定することができるみたいです。
早速、軽く試してみました。
導入〜検証
導入
公式ドキュメントを参照すると、
To use the workflow_dispatch event, you need to include it as a trigger in your GitHub Actions workflow file. The example below only runs the workflow when it’s manually triggered:
https://docs.github.com/ja/actions/learn-github-actions/events-that-trigger-workflows#workflow_dispatch
ということで、
トリガーにworkflow_dispatch
を追加するだけで大丈夫そう。
なお、
To trigger the workflow_dispatch event, your workflow must be in the default branch. For more information about configuring the workflow_dispatch event, see “Events that trigger workflows”.
との記載もあり、workflow_dispatch
の設定をしたWFファイル自体はデフォルトブランチに設置しておく必要があるみたいです。
それはそうか。
早速設定してみます。
設定
設定はこんな感じ。
code
workflow_dispatch
関連の所を抜粋すると、以下のような感じ。
on:
workflow_dispatch:
inputs:
drink:
description: 'order drink'
required: true
food:
description: 'order food'
required: false
- WFのトリガー に`workflow_dispatch`を追加(これは必須)
- inputsを設定。(WF実行時にパラメータを渡す設定。必須じゃないです。)
で、いざ検証です。
検証
どうやら、Github Cliでコマンド実行も可能なようですが、
今回はブラウザから実行してみます。
リポジトリ > Actions タブ を見てみると、
これまで表示されていなかった
「Manually trigger workflor」ボタンを押してみると、
WFを手動実行できそうな表示に切り替わりました。
「Run workflow」を押して見ると、
なるほど、ここで
- どのブランチのWFファイルを参照するか
- inputsパラメータを入力
を設定するのか。
「Use workflow from」を押してみると
おー、デフォルトブランチ以外も表示されました。
折角なので、
featureブランチを設定して、パラメータ適当に入れてWFを実行してみます。
動きました!こんな感じで、無事デフォルトブランチ以外のWFファイルを参照して、WF実行できました。
めでたしめでたしです。
満足。
まとめ
workflow_dispatch
を設定することで、
Githubのブラウザ上から以下のことができるようになりました!
- WFの手動実行
- どのブランチにあるWFファイルを使うかを指定
便利!!
注意したいところ
検証環境には、あった方がいいと思う!けど、
本番環境の場合、事故るケースがありそうなので注意したほうがよさそう。
例えばレビュー〜デプロイが以下のようなフローになっている場合、
- デフォルトブランチへのマージはレビュー必須
- 本番WFの実行トリガーは
デフォルトブランチへのマージ
上記のフローにworkflow_dispatch
を追加設定してしまうと、
レビューしていないのに、workflow_dispatch
の手動実行により本番環境にデプロイされてしまった!
という事故が想定されます。(そんな悪質な開発者いるか、という感じもしますが..)
ということもあり、workflow_dispatch
、便利なので積極的に導入したいですが、使い所は精査したほうが良さそうです。
コメント