LoginSignup
3

More than 1 year has passed since last update.

posted at

updated at

git-flowにおけるreleaseブランチのマージをGitHub Actionsで実現する

はじめに

プロダクトのgitサービスにGitHubを、gitブランチモデルに git-flow を採用しています。

git-flowでは release/* ブランチを master(main) ブランチと develop ブランチにマージするという工程があるのですが、GitHubのプルリクエストでは2つのブランチに同時にマージするということができません。よって、今までは master(main) へのマージはプルリクエストのクローズ処理で行い、develop へのマージはローカル環境で人力で行いpushする……というダサダサな運用を続けていました。

もうちょっとなんとかならんかということでGitHub Actionsを使って自動化することにしました。

最初は run でスクリプトを書き下ろさなきゃいけないよなぁ……と考えていたのですが、探してみるとそのものズバリ yanamura/git-flow-merge-action というアクションがあったのでこれを使うことにしました。

完成物

ということで以下のとおりワークフローファイルを作成しました。というかほぼgit-flow-merge-actionのサンプルのままです。

.github/workflows/auto_merge.yml
on:
  pull_request:
    types: [labeled]
jobs:
  auto-merge:
    if: github.event.label.name == 'release'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        name: Checkout repository
      - name: Extract branch name
        uses: mdecoleman/pr-branch-name@1.0.0
        id: extract_branch
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - uses: yanamura/git-flow-merge-action@v1
        name: git-flow merge
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: ${{ steps.extract_branch.outputs.branch }}
          # git-flowにおけるdevelopブランチの、あなたのリポジトリーにおける名称
          develop_branch: "develop"
          # git-flowにおけるmasterブランチの、あなたのリポジトリーにおける名称
          main_branch: "main"

設定する箇所は main_branch のところぐらいですかね。
デフォルトだと master が設定されてしまいますが、今回のリポジトリーは main という名称にしていたので "main" を設定しています。

運用方法

GitHub Actionsによる自動化を導入することで、プルリクエストのクローズの手順が変わります。

今まではプルリクエストページの Merge pull request ボタンを押下することでプルリクエストのクローズを行っていましたが、今度からは Merge pull request ボタンの押下の代わりにプルリクエストに対して release ラベルを付与することを行います。
release ラベルが付与されたことをトリガーにして上述のGitHubアクションが起動し、 main ブランチへのマージ、プルリクエストのクローズ、 develop ブランチへのマージが全て行われます。

頑張れば Merge pull request ボタンの押下をトリガーにしたワークフローも書ける気がしたのですが、運用の手間はさほど変わらないことからgit-flow-merge-actionのサンプルをそのまま採用しています。

おわりに

楽に設定できて良かった😊

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3