サイト名変更・お引越しのお知らせ

Github Actionsを使ってリリースPRを自動生成する方法を解説

Github Actionsを使ってリリースPRを自動生成する方法を解説します。

テンプレートを利用したPR

例えば、mainブランチをリリースブランチ、開発ブランチをdevelopブランチとした場合に、developブランチに対してPRを作成しマージした時にそのPR群をまとめて、mainブランチに対するPR(リリースPR)を自動で生成してくれるようになります。

モグモグさん

方法は色々ありますが、今回はgit-pr-releaseを使っていきます。

まずは簡単に自動化したいという方には参考になると思います!

バージョン
  • git-pr-release 2.2.0

ワークフローを作成

早速ワークフローを作成していきます。

name: RELEASE - Creates a release PR

on:
  push:
    branches:
      - develop
jobs:
  create-release-pr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Ruby 2.7
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7

      - name: Creates a release PR
        env:
          GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GIT_PR_RELEASE_BRANCH_PRODUCTION: main
          GIT_PR_RELEASE_BRANCH_STAGING: develop
          GIT_PR_RELEASE_LABELS: "Release"
        run: |
          gem install -N git-pr-release -v "2.2.0"
          git-pr-release --no-fetch

今回の設定

それぞれの値は皆さんの設定に書き換えてください。

  • リリースブランチをmain
  • 開発ブランチをdevelop
  • PRラベルにRelease

自動生成PR

作成したワークフローをマージしたのちに、developブランチに対してPRをマージすると自動でこんな感じでmainブランチに向けたPRが作成されます。

モグモグさん

簡単に作成できますね。

このフローを作成しておけばPRを確認したり振り返ることが楽になるのでこれだけでも便利だと思います!

他の設定を加える

そのまま使っても便利ではありますが、いくつか設定を加えてみましょう

ラベルを複数追加する

ラベルは、カンマ区切りで渡すことで複数付与することができます。

name: RELEASE - Creates a release PR

on:
  push:
    branches:
      - develop
jobs:
  create-release-pr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Ruby 2.7
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7

      - name: Creates a release PR
        env:
          GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GIT_PR_RELEASE_BRANCH_PRODUCTION: main
          GIT_PR_RELEASE_BRANCH_STAGING: develop
          GIT_PR_RELEASE_LABELS: "Release, DevOps" # 追加
        run: |
          gem install -N git-pr-release -v "2.2.0"
          git-pr-release --no-fetch

複数ラベル

値は例ですが、複数付与されていますね。

既存のラベルを使ったり新規で作成することが可能です。

テンプレートを使う

PRのテンプレートを作成してPRをカスタマイズすることができます。

ここでは.pr-release-templateというファイルを指定しました。

name: RELEASE - Creates a release PR

on:
  push:
    branches:
      - develop
jobs:
  create-release-pr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Ruby 2.7
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7

      - name: Creates a release PR
        env:
          GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GIT_PR_RELEASE_BRANCH_PRODUCTION: main
          GIT_PR_RELEASE_BRANCH_STAGING: develop
          GIT_PR_RELEASE_LABELS: "Release, DevOps"
          GIT_PR_RELEASE_TEMPLATE: .pr-release-template # 追加
        run: |
          gem install -N git-pr-release -v "2.2.0"
          git-pr-release --no-fetch

テンプレートを作成

一行目は、PRのタイトルになります。

データの出力はERBテンプレートを使っています。

RELEASE <%= Time.now %>

## Related PRs
<% pull_requests.each do |pr| -%>
- :rocket: #<%=  pr.number %> <%= pr.mention %>
<% end -%>

テンプレートを利用したPR

タイトルとボディに反映されていますね。

ここはアイデア次第なのでより良いテンプレートを作成してみてください。

git-pr-release --dry-runというオプションがあるのでローカルで試すことも可能です。

まとめ

Github Actionsを使ってリリースPRを自動生成する方法を解説しました。

カスタマイズも可能ですし、デフォルトでも十分使えるので気になる方は自動化してみてください。