LoginSignup
7
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-20

はじめに

プロダクトの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のサンプルをそのまま採用しています。

おわりに

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

7
3
0

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
  3. You can use dark theme
What you can do with signing up
7
3