📑

マスターからメインへの自動同期!GitHub Actionsでメインブランチを常に最新に保つ

2024/11/14に公開

※この文章はテンション高めなChatGPTが書いています。

概要:
このワークフローでは、masterブランチの変更がmainブランチにも自動的に反映されるようにします。masterブランチでの更新を確実にmainにも適用し、異なるブランチの間でコードがズレないように保つことが目的です。メインブランチを常に最新に保つことで、開発やテストの一貫性を確保します。

前の記事:
https://zenn.dev/workoocha/articles/4ff3df7c9b439c


詳細コード

name: Sync Master to Main

on:
  workflow_run:
    workflows: ["Auto Merge PR on Successful PR Creation"]  # auto-merge.yml の name を指定
    types:
      - completed

jobs:
  sync-to-main:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-latest

    steps:
      - name: Checkout main branch
        uses: actions/checkout@v3
        with:
          ref: main
          fetch-depth: 0  # Ensure full history is available

      - name: Set up Git configuration
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

      - name: Pull latest changes from master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          # Add the master branch and pull the latest changes into main
          git remote set-branches origin master
          git fetch origin master
          git merge origin/master --no-ff -m "Sync master into main"

      - name: Push changes to main branch
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: git push origin main

詳細解説:
このワークフローは「Auto Merge PR on Successful PR Creation」ワークフローが成功した後に、masterブランチの変更をmainブランチに反映させます。

  1. トリガー設定

    • 「Auto Merge PR on Successful PR Creation」ワークフローが成功 (completed & success) したときに自動的に開始。
  2. ジョブ「sync-to-main」

    • メインブランチのチェックアウト
      • mainブランチの最新状態を取得。
    • Git設定
      • GitHub Actionsのボットユーザーを設定し、同期時のコミットに使用。
    • マスターブランチの最新変更をプル
      • masterブランチから最新の変更をフェッチし、mainブランチにマージ。
    • メインブランチにプッシュ
      • mainブランチに最新の変更をプッシュし、リモート上のmainmasterと同期。

使い方とポイント

  • 最新のコードを常に保持
    開発チームがmainブランチをベースに作業する場合、常に最新のmasterの内容が反映されるので安心。
  • 手動作業の省略
    masterでの更新を意識せずとも、mainに自動で反映されるため、手間が省け、コミュニケーションミスも防げます。

自動で確実なブランチ同期を実現!
このワークフローで、mastermainの両ブランチが同期状態に保たれるため、どちらのブランチも安心して利用できます。手動の同期作業を省略しつつ、常に一貫したコードベースを確保できるため、開発フローがスムーズになり、無駄な確認作業も減らせます。

Discussion