GitHub Actionsのトリガーの1つで手動でトリガーをかけるworkflow_dispatch
について。
workflow_dispatch
GitHub Actionsのトリガーとして、workflow_dispatch
というものがあります。
これをworflowファイル内のon
の部分に加えると
workflowのページにRun workflow
のボタンが出来て手動でも実行できるようにもなります。
手動実行の際にinputs
で指定した変数を入力することが出来ます。
inputs
inputs
にはtype
としてstring
、choice
、boolean
(true
or false
)、environment
が使えます。
GitHub Actions: Input types for manual workflows GitHub Changelog
workflow_dispatchのところからContexts - GitHub Docsへのリンクがありますが、こちらのinputsのところをみると
string
、number
、boolean
とあって、choice
とかの説明がちょっと見当たりませんでした。ドキュメントがまだアップデートされてない?(結構時間経ってますが。)
それぞれ
string
: 文字列。Run workflow
では自由に書ける入力欄になる。choice
:options
という値にリストを与え、その中から選ぶようなプルダウンを生成する。default
が指定されてなければ(もしくはリストに無いものが指定されてたら)一番上のものがdefaultとして出る。boolean
:true
orfalse
enviroment
: レポジトリのSettings Environmentsで作った環境の名前のリストから選ぶプルダウンを生成する。default
がなければ一番上の環境の名前がdefualtとして出る。
その他number
など本来ないtype
を指定すると、エラーにはなりませんが単にstring
と同様に扱われるようになっているみたいでした。
(数字だけ選べる、とかにはならない。またtest_type
みたいな意味のないのを入れても普通にstring
typeと同じように使える。)
設定例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
push
やpull_request
と同じようにworkflow_dispatch
を設定します。
inputs
にtype
としてstring
、choice
、boolean
、environment
以外にもnumber
、test_type
のものも入れています。
また、このレポジトリではEnvironments
でdev
、prod
という環境を作って、それぞれ
TEST_VAR
という変数をEnvironment variables
の中で
dev
: This is a development environment.prod
: This is a production environment.
という感じに設定してあります。
このworkflowを作ると、Run workflow
の中はこんな感じになります。
choice
、environment
のところがプルダウンになっていてboolean
の所がチェックボックスになっているのがわかります。
他のところはstring
を含めすべて自由入力欄です。
実行例
push時
push
のときにはworkflow_dispatch
のinputs
の値はすべて空になります。
従ってboolean test
、string test
のif
文は通りません(定義なしはfalse
判定)。
また、environment
の設定もからなのでvars.TEST_VAR
も設定されないまま空です。
手動実行時
Run workflow
ボタンから実行すると、実行リストではManual run
と表示されます。
上のworkflowで設定を変えないまま走らせてみると こんな感じの結果になります。
今度はstring test
は実行されています。
値はdefault string
という文字列ですが、${{ ... }}
で単に値を指定した時、
文字列であれば空でなければ通るようです。
enviroment test
でTEST_VAR
の値がprod
のものになっていることが分かります。
また、number_var
やtest_type_var
はtype
の値がおかしくてもstring
のように扱われています。
手動実行時、値変更
値を変更して実行してみます。
string_var
:default_string
->false
choice_var
:a
->b
boolean_var
:false
->true
environment_var
:prod
->dev
number_var
:1
->xyz
結果はこんな感じ。
string_var
をfalse
という文字列にしてもやはり文字列なので空で無い限り成功になります。
数字の0
とかを入れても文字列とみなされてtrueになります。
ちなみに入力欄を空のまま実行するとdefault
の値になるので上のworkflowでは
手動実行の場合には必ずstring test
が実行されることになります。
boolean test
は今回は実行されています。
このような感じで値だけで評価する際にはboolean
typeのみが使えるようです。
文字列の場合には
1
|
|
の様な感じで比較でチェックを行えば必要な文字列の時だけ通す事ができます。
environment_var
も変更によって正しくdevelopmentな環境の変数が取れています。
また、number_var
に関しては文字列を入れましたがそのまま受け入れられてやはり単に
string
と同じ扱いになっています。