search
LoginSignup
8
Help us understand the problem. What are the problem?

GitHub Actions Advent Calendar 2021 Day 18

posted at

updated at

Organization

workflow_dispatch の使い方、使い所

はじめに

こちらの記事は GitHub Actions Advent Calendar 2021の18日目の記事となります。他の皆様の投稿もぜひご覧ください!

今回は GitHub Actions のワークフローをトリガーするイベントの一つである、 workflow_dispatch についてまとめていきたいと思います。こちらのイベントは昨年の6月に使えるようになったイベントです。実際に使ってみるととても便利です。使えるようになってからだいぶ時間は経っていますが、使い方だったり、どういう時に使えるのか、といったことを紹介しようと思います。

workflow_dispatch イベントとは

  • ワークフローを手動で実行できるイベント
  • 実行ブランチを選択できるUIがデフォルトで追加される
  • 実行時のパラメータは独自の項目についてもUIで指定できる

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

使い方

基本的な使い方

on 構文に workflow_dispatch を指定するだけです。

name: workflow_dispatch sample 1

on:
  workflow_dispatch:

jobs:
  printLog:
    runs-on: ubuntu-latest

    steps:
    - name: print log
      run: echo "Hello!"

デフォルトブランチにマージします。GitHub上で確認すると、Actions タブからワークフローにアクセスすることができ、手動実行できるようになっています。また、ワークフローを実行するブランチを選択できるようにもなっています。
workflow_dispatch sample 1

Run workflow ボタンから実行してみます。
run workflow_dispatch sample 1
無事実行できました。

実行時にデータを付与したい

今度は、ブランチを選択できるだけではなく、挨拶する人の名前を実行時に指定できるようにします。workflow_dispatch に続けて inputs を定義します。

name: workflow_dispatch sample 2

on:
  workflow_dispatch:
    inputs:
      name:
        description: 'Name'
        required: true

jobs:
  printLog:
    runs-on: ubuntu-latest

    steps:
    - name: print log
      run: echo "Hello! ${{ github.event.inputs.name }}"

参考: https://docs.github.com/ja/actions/learn-github-actions/events-that-trigger-workflows#example-workflow-configuration

再びデフォルトブランチにマージし、GitHub上から確認してみます。
run workflow_dispatch sample 1
今度はブランチだけでなく、Nameも入力できるようになっています。Chihiroと入力し、実行してみます。
run workflow_dispatch sample 1
入力した名前がちゃんと参照されています。

注意

ワークフローを手動で実行するためには、ワークフロー(ymlファイル)がデフォルトブランチに含まれていないといけません。

To trigger the workflow_dispatch event, your workflow must be in the default branch.

参考: https://docs.github.com/ja/actions/managing-workflow-runs/manually-running-a-workflow#configuring-a-workflow-to-run-manually

使い所

特におすすめなのは、普段スケジュール実行(schedule)しているワークフローに対してworkflow_dispatchもつけておくことです。イベントは複数指定することができるため、scheduleworkflow_dispatchの両方を指定することが可能です。

スケジュール実行しているワークフローが失敗した時に、対応をするために試行錯誤しながら何度かワークフローを実行することになると思います。スケジュール実行のままだとワークフローを任意のタイミングで実行できないので、今まではその都度pushなどに書き換えていました。

workflow_dispatchをつけてあるとイベント部分を書き換えなくて済みます。pushに書き換えて作業をしても良いのですが、あとで戻し忘れたりすることもあったりするのでworkflow_dispatchをつけておくに越したことはないかなという感じです。

大したことないことのように見えるかもですが、実際にworkflow_dispatchを指定してみるとめちゃくちゃ便利さを感じています。

最後に

GitHub Actions、楽しい!
引き続きいろいろ使っていこうと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8
Help us understand the problem. What are the problem?