GitHub Actions をマスターブランチ以外で実行する方法
INFO
2020年8月現在、GitHub Actionsのワークフローファイル(YAML)はデフォルトではマスターブランチ(現在のデフォルトブランチ)からのみ読み込まれていました。ただし、GitHubはこの挙動を改善し、現在ではどのブランチでもワークフローファイルを実行できるようになっています。
問題の本質
GitHub Actionsは、特定のイベント(プッシュやプルリクエストなど)が発生したときに、対応するワークフローファイル(.github/workflows/
ディレクトリ内のYAMLファイル)を探します。しかし、ワークフローファイルがブランチに存在しない場合、そのブランチで発生したイベントに関連するワークフローは実行されません。
GitHubの公式ドキュメントによれば、ワークフローのトリガーは以下のように動作します:
- リポジトリでイベントが発生し、関連するコミットSHAとGit参照がウェブフックに含まれます
- そのコミットSHAまたはGit参照において、
.github/workflows
ディレクトリがワークフローファイルに対して検索されます - ワークフローファイルが存在する場合、トリガーイベントに一致するワークフローが新しい実行を開始します
解決方法
方法1: ブランチにワークフローファイルを作成する
最も簡単な解決策は、テストしたいブランチにワークフローファイルを作成することです。
# .github/workflows/your-workflow.yaml
name: Your Workflow
on:
push:
branches:
- "your-test-branch" # ここにブランチ名を指定
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# その他のステップ
方法2: 手動実行を有効にする
workflow_dispatch
イベントを追加することで、GitHubのWebインターフェースから任意のブランチでワークフローを手動実行できます。
name: Manual Trigger Workflow
on:
workflow_dispatch:
push:
branches:
- "your-branch"
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# その他のステップ
TIP
workflow_dispatch
を追加すると、GitHubのActionsタブから「Run workflow」ボタンが表示され、任意のブランチを選択して手動で実行できます。
方法3: プルリクエスト経由でのワークフローファイル移動
ワークフローファイルが既にマスターブランチにある場合、以下の手順で他のブランチでも動作するようにできます:
- マスターブランチに空のYAMLファイルを作成
- そのファイルをターゲットブランチに移動するプルリクエストを作成
- ブランチで実際のワークフロー内容を編集
on:
push:
paths:
- 'path/to/your/code/**' # ワークフローファイル以外の変更をトリガーに
方法4: 複数ブランチに対応した設定
メインブランチとテストブランチの両方でワークフローを実行する場合:
on:
push:
branches:
- "main"
- "your-test-branch"
pull_request:
branches:
- "main"
paths:
- ".github/workflows/your-workflow.yaml"
トラブルシューティング
WARNING
ワークフローファイルを編集してもアクションが実行されない場合、以下の点を確認してください:
- ファイルが正しい場所(
.github/workflows/
)にあるか - YAML構文が正しいか
- トリガー条件が正しく設定されているか
- ブランチ名が正確に指定されているか
まとめ
GitHub Actionsをマスターブランチ以外で実行するには、以下のいずれかの方法を使用します:
- 対象ブランチに直接ワークフローファイルを作成する
workflow_dispatch
を追加して手動実行を可能にする- プルリクエスト経由でワークフローファイルを移動する
- 複数ブランチに対応したトリガー条件を設定する
現在のGitHubの仕様では、ブランチにワークフローファイルが存在すれば、どのブランチでもアクションを実行できるようになっています。