GitHub Actions が手動実行に対応してた

GitHub Actions にはずっと手動実行が提供されていなかったので repository_dispatch トリガーを使って GitHub API 経由で起動することでしのいでいました。この方法は Master ブランチにしか適用できないという制約がありました。

先月 workflow_dispatch という手動実行用のトリガー機能がリリースされてました。

github.blog

日本語ドキュメントへの反映はまだのようです。

https://docs.github.com/en/actions/reference/events-that-trigger-workflows#manual-events

トリガーとして workflow_dispatch を指定してワークフローを選択すると Run workflow というボタンが表示され手動実行が可能になります。repository_dispatch と違ってブランチを指定することができます。

on: 
  workflow_dispatch:

f:id:kondoumh:20200805170411p:plain

さらに Action を書く時に使用するメタデータ構文で、ワークフロー実行時の入力値を設定できます。

docs.github.com

docs.github.com

workflow_dispatch に inputs でログレベルやタグ名を指定するサンプルが紹介されています。

on: 
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'
      tags:
        description: 'Test scenario tags'

実行時に入力フォームが生成され、入力値を設定できます。この例では logLevel は必須で、デフォルト値として warning が設定されます。

f:id:kondoumh:20200805172713p:plain

ワークフローの job では入力値を github.event から取得でき、${{ github.event.inputs.logLevel }} のように取り出すことができます。

Jenkins のパラメータ付きビルドのように使えそうです。

  • テストケース番号を指定してテスト結果の成果物ファイル名に埋め込む
  • 他リポジトリのブランチ・タグを指定して checkout してテストする

などなど、いろいろと使い道が考えられます。

workflow_dispatch はGitHub API 経由で呼ぶことも可能です。Web UI と同様ブランチ指定する refinputs を POST パラメータで指定できます。

https://docs.github.com/en/rest/reference/actions#create-a-workflow-dispatch-event