workflow_dispatchで非masterブランチのワークフローを実行する方法
問題
GitHub Actionsで、workflow_dispatch
イベントを使って非デフォルトブランチ(master/main以外)に作成したワークフローを実行しようとすると、以下のような問題が発生します:
- Actionsタブのワークフロー一覧は、最後に実行されたワークフローのブランチに基づいて表示内容が変わります
- 「This workflow has a workflow_dispatch event trigger」というテキストはmasterブランチの内容を表示し続けることがあります
- ブランチ上のワークフローがGitHub UIに正しく表示されない
特にサードパーティのリポジトリでアクションを開発・テストする際に、この制限が開発プロセスを複雑にします。
解決策
方法1: GitHub CLIを使用する(推奨)
GitHub CLI (gh
) を使用すると、任意のブランチのワークフローを直接実行できます:
# 利用可能なワークフローをリスト表示
gh workflow list
# 特定のブランチでワークフローを実行
gh workflow run 'ワークフロー名' --ref ブランチ名
# 入力パラメータを指定して実行
gh workflow run 'ワークフロー名' --ref ブランチ名 -f パラメータ名=値
INFO
GitHub CLIを初めて使用する場合は、事前に gh auth login
で認証が必要です。
方法2: 一時的なトリガーを追加する
ワークフローをGitHubに登録するために、一時的に push
または pull_request
トリガーを追加します:
name: 'マイワークフロー'
on:
workflow_dispatch:
inputs:
パラメータ名:
description: パラメータの説明
type: string
required: true
push: # 一時的に追加
branches:
- features/機能ブランチ
jobs:
ジョブ名:
runs-on: ubuntu-latest
env:
# pushトリガー時はinputsがnullになるためデフォルト値を設定
パラメータ変数: ${{ inputs.パラメータ名 || 'デフォルト値' }}
steps:
- run: echo "実行中..."
ワークフローを実行した後、push
または pull_request
の行を削除できます。
方法3: ダミーワークフローを作成する
デフォルトブランチに基本的なワークフローを作成し、機能ブランチで詳細を実装する方法:
- デフォルトブランチに基本ワークフローを作成
- 機能ブランチでワークフローを拡張
- Actionsタブで「Use workflow from」で機能ブランチを選択して実行
# デフォルトブランチの基本ワークフロー
name: テスト実行 v1
on:
workflow_dispatch:
jobs:
テスト:
runs-on: ubuntu-latest
steps:
- name: 環境情報を表示
run: env | grep ^GITHUB
各方法の比較
方法 | メリット | デメリット | 使用場面 |
---|---|---|---|
GitHub CLI | ブランチ切り替え不要、パラメータ指定が容易 | CLIのインストールが必要 | 日常的な開発テスト |
一時トリガー | UIから実行可能、設定が簡単 | コミット履歴が汚れる | 初期設定時 |
ダミーワークフロー | 安全、分離されたテスト | 設定が複雑 | 大規模プロジェクト |
ベストプラクティス
TIP
開発時にはGitHub CLIを使用し、本番デプロイ前にはUIでのテストも行うことをおすすめします。
WARNING
push
トリガーを追加する場合、意図しない実行を防ぐために特定のブランチのみに制限しましょう。
# 推奨設定例
on:
workflow_dispatch:
inputs:
environment:
description: デプロイ環境
type: environment
required: true
push:
branches:
- features/** # 特定のブランチパターンのみ
トラブルシューティング
- ワークフローがリストに表示されない場合: 一度は実行してGitHubにワークフローを登録する必要があります
- 入力パラメータがnullになる:
push
トリガー使用時はデフォルト値を設定しましょう - 権限エラー: サードパーティリポジтория場合、フォークを作成してテストする必要があるかもしれません
まとめ
非デフォルトブランチのワークフローを workflow_dispatch
で実行するには、主に3つの方法があります。開発効率を考えるとGitHub CLIを使用する方法が最も便利で、CI/CDパイプラインのテストとデバッグを効率化できます。状況に応じて最適な方法を選択し、安全なワークフロー開発を実現しましょう。