【Github】Github Actions ~ workflow_dispatch / 手動実行 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2024/01/28/004128

の分冊。

Github Actions の workflow_dispatch を使って実装してたら
エラー「you may only define up to 10 `inputs` for a `workflow_dispatch` event」
とか見舞われたりしたので、ここらでまとめておく。

目次

【1】workflow_dispatch
【2】構文
 1)on - イベント部分 -
 2)inputs - 入力部分 -
【3】使用上の注意
 1)デフォルトブランチではないと実行ボタンが表示されない
 2)デフォルトブランチ以外で新規作成したWorkflowが一覧に表示されない
 3)workflow_call の inputs は 10個まで
【4】サンプル
 例1:入力パラメータ付き手動実行

【1】workflow_dispatch

* ワークフロー手動実行
* GitHubのブラウザ上からマニュアル実行できる
* inputs により入力値の指定も可能

https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch

【2】構文

1)on - イベント部分 -

# こんだけ
on:
  workflow_call:

2)inputs - 入力部分 -

https://docs.github.com/ja/actions/learn-github-actions/contexts#inputs-context
https://docs.github.com/ja/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs
https://docs.github.com/ja/actions/creating-actions/metadata-syntax-for-github-actions#inputs

on:
  workflow_call:
    # ★ここ追加
    inputs:
      sample_value: # [Required] 入力ID(input_id)
        description: [Required] This is just a sample # 説明文
        type: number # データ型(boolean, choice, number, environment or string)
        required: false # [Optional] 必須かどうか (true/false)
        default: 1 # [Optional] デフォルト値
        deprecationMessage: [Optional] This value is deprecation # 

補足:データ型「environment」について

* Github の environment を設定した場合の値

https://docs.github.com/ja/actions/deployment/targeting-different-environments/using-environments-for-deployment

 => 詳しくは、以下のURL参照

https://zenn.dev/kitoketa/articles/f98a082e233c29

【3】使用上の注意

1)デフォルトブランチではないと実行ボタンが表示されない

* デフォルトブランチではないと、Githubの画面上に
 実行ボタンが出てこない

https://dev.classmethod.jp/articles/github-actions-workflow-dispatch-default-branch/
https://dev.classmethod.jp/articles/github-actions-running-a-workflow-for-a-workflowdispatch-trigger-that-is-not-on-the-default-branch/
https://jousys-force.deepapex.com/blogs/run-github-actions-workflow

回避策

* GitHub CLI「gh workflow run [ワークフロー] --repo [リポジトリ名] --ref [ブランチ名]」
 を使って実行する
 => GitHub CLIの詳細は、以下の関連記事を参照のこと

GitHub CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/02/17/233836

2)デフォルトブランチ以外で新規作成したWorkflowが一覧に表示されない

workflow_dispatch 固有の問題ではないのだが、
デフォルトブランチ以外でworkflow_dispatch だけのWorkflowだと、
Workflow一覧に表示されず、実行できない。
なお、1)であった「GitHub CLI」でも解決できなかった。

回避策
https://zenn.dev/kappaz/articles/5303fb3ce621e6

に書いてある通り。
~~~~~
Github Actionsにおいて、新規作成したworkflowファイルの動作確認しようとして
branchをpushしても、Actionsに該当のワークフローが表示されないことがある。

その場合は以下のように記載すると、pushのタイミングでworkflowが実施される。
~~~~~

追加例

on:
  push:
    branches:
      [my_branch]

3)workflow_call の inputs は 10個まで

* inputs の数が 10個を超えて定義すると、
 以下「エラー内容」のように怒られる、、、

エラー内容

you may only define up to 10 `inputs` for a `workflow_dispatch` event

https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows#providing-inputs

注:
・・・略・・・
inputs の最上位レベルのプロパティの最大数は 10 です。
inputs のペイロードの最大数は 65,535 文字です。

【4】サンプル

例1:入力パラメータ付き手動実行

name: DemoWorkflow

on:
  # Allows you to run this workflow manually from the Actions tab
#  push:
#    branches:
#      - your-branch
  workflow_dispatch:
    inputs:
      # ここの変数の個数が10個まで(【2】使用上の注意の3)参照)
      chosen-hello-world:
        required: true
        type: choice
        options:
        - Hello
        - World

jobs:
  sample-job:
    runs-on: ubuntu-latest
    steps:
      - name: Run a one-line script
        run: echo Hello, world! - ${{ inputs.chosen-hello-world }}

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ ワークフロー制御 ~
https://dk521123.hatenablog.com/entry/2024/01/28/004128
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
GitHub CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/02/17/233836