Github Actionsを使ってリリース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
作成したワークフローをマージしたのちに、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 -%>
タイトルとボディに反映されていますね。
ここはアイデア次第なのでより良いテンプレートを作成してみてください。
git-pr-release --dry-run
というオプションがあるのでローカルで試すことも可能です。
まとめ
Github Actionsを使ってリリースPRを自動生成する方法を解説しました。
カスタマイズも可能ですし、デフォルトでも十分使えるので気になる方は自動化してみてください。