Skip to content

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) を使用すると、任意のブランチのワークフローを直接実行できます:

bash
# 利用可能なワークフローをリスト表示
gh workflow list

# 特定のブランチでワークフローを実行
gh workflow run 'ワークフロー名' --ref ブランチ名

# 入力パラメータを指定して実行
gh workflow run 'ワークフロー名' --ref ブランチ名 -f パラメータ名=値

INFO

GitHub CLIを初めて使用する場合は、事前に gh auth login で認証が必要です。

方法2: 一時的なトリガーを追加する

ワークフローをGitHubに登録するために、一時的に push または pull_request トリガーを追加します:

yaml
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: ダミーワークフローを作成する

デフォルトブランチに基本的なワークフローを作成し、機能ブランチで詳細を実装する方法:

  1. デフォルトブランチに基本ワークフローを作成
  2. 機能ブランチでワークフローを拡張
  3. Actionsタブで「Use workflow from」で機能ブランチを選択して実行
yaml
# デフォルトブランチの基本ワークフロー
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 トリガーを追加する場合、意図しない実行を防ぐために特定のブランチのみに制限しましょう。

yaml
# 推奨設定例
on:
  workflow_dispatch:
    inputs:
      environment:
        description: デプロイ環境
        type: environment
        required: true
  push:
    branches:
    - features/**  # 特定のブランチパターンのみ

トラブルシューティング

  • ワークフローがリストに表示されない場合: 一度は実行してGitHubにワークフローを登録する必要があります
  • 入力パラメータがnullになる: push トリガー使用時はデフォルト値を設定しましょう
  • 権限エラー: サードパーティリポジтория場合、フォークを作成してテストする必要があるかもしれません

まとめ

非デフォルトブランチのワークフローを workflow_dispatch で実行するには、主に3つの方法があります。開発効率を考えるとGitHub CLIを使用する方法が最も便利で、CI/CDパイプラインのテストとデバッグを効率化できます。状況に応じて最適な方法を選択し、安全なワークフロー開発を実現しましょう。