Skip to content

GitHub Actions をマスターブランチ以外で実行する方法

INFO

2020年8月現在、GitHub Actionsのワークフローファイル(YAML)はデフォルトではマスターブランチ(現在のデフォルトブランチ)からのみ読み込まれていました。ただし、GitHubはこの挙動を改善し、現在ではどのブランチでもワークフローファイルを実行できるようになっています。

問題の本質

GitHub Actionsは、特定のイベント(プッシュやプルリクエストなど)が発生したときに、対応するワークフローファイル(.github/workflows/ ディレクトリ内のYAMLファイル)を探します。しかし、ワークフローファイルがブランチに存在しない場合、そのブランチで発生したイベントに関連するワークフローは実行されません。

GitHubの公式ドキュメントによれば、ワークフローのトリガーは以下のように動作します:

  1. リポジトリでイベントが発生し、関連するコミットSHAとGit参照がウェブフックに含まれます
  2. そのコミットSHAまたはGit参照において、.github/workflows ディレクトリがワークフローファイルに対して検索されます
  3. ワークフローファイルが存在する場合、トリガーイベントに一致するワークフローが新しい実行を開始します

解決方法

方法1: ブランチにワークフローファイルを作成する

最も簡単な解決策は、テストしたいブランチにワークフローファイルを作成することです。

yaml
# .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インターフェースから任意のブランチでワークフローを手動実行できます。

yaml
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: プルリクエスト経由でのワークフローファイル移動

ワークフローファイルが既にマスターブランチにある場合、以下の手順で他のブランチでも動作するようにできます:

  1. マスターブランチに空のYAMLファイルを作成
  2. そのファイルをターゲットブランチに移動するプルリクエストを作成
  3. ブランチで実際のワークフロー内容を編集
yaml
on:
  push:
    paths:
      - 'path/to/your/code/**'  # ワークフローファイル以外の変更をトリガーに

方法4: 複数ブランチに対応した設定

メインブランチとテストブランチの両方でワークフローを実行する場合:

yaml
on:
  push:
    branches:
      - "main"
      - "your-test-branch"
  pull_request:
    branches:
      - "main"
    paths:
      - ".github/workflows/your-workflow.yaml"

トラブルシューティング

WARNING

ワークフローファイルを編集してもアクションが実行されない場合、以下の点を確認してください:

  • ファイルが正しい場所(.github/workflows/)にあるか
  • YAML構文が正しいか
  • トリガー条件が正しく設定されているか
  • ブランチ名が正確に指定されているか

まとめ

GitHub Actionsをマスターブランチ以外で実行するには、以下のいずれかの方法を使用します:

  1. 対象ブランチに直接ワークフローファイルを作成する
  2. workflow_dispatch を追加して手動実行を可能にする
  3. プルリクエスト経由でワークフローファイルを移動する
  4. 複数ブランチに対応したトリガー条件を設定する

現在のGitHubの仕様では、ブランチにワークフローファイルが存在すれば、どのブランチでもアクションを実行できるようになっています。