1
1

リリース用pull requestの内容をラベルでグルーピングしてわかりやすくする

Last updated at Posted at 2023-11-18

git-pr-releaseというリリース用pull requestを作成してくれるGithubアクションがあるのですが、そこで使えるテンプレートに手を加えて気に入ったものが出来たので共有です。

気に入ったらぜひ使ってみてください。

テンプレートを適用して所定のブランチにマージすると、以下のようなpull requestが自動的に生成されます。

名称未設定.png

git-pr-releaseはデフォルト状態でも、更新内容を一覧化してくれるのですが、更新内容をラベルによってグルーピングする事で何が更新されたのか、よりわかりやすくなったと思います。

更新内容を振り分ける方法は以下の通りです。

  • 新機能: enhancement ラベルをPRに付与
  • 改善: improvement ラベルをPRに付与
  • バグ対応: bug ラベルをPRに付与

カスタマイズされたラベルを利用している場合は、任意のラベルに書き換えて使ってください。

「詳細を確認する」をクリックすると、マージコミットの詳細(PRの本文)が表示されます。

git-pr-release.erb
## Productionリリース <%= Time.now.strftime('%Y-%m-%d %H:%M:%S') %>

## このリリースに含まれる更新内容

<% label_names = { 'enhancement' => '新機能(enhancement)', 'improvement' => '改善(improvement)', 'bug' => 'バグ改修(bug)', 'other' => 'その他' } -%>
<% label_names.each do |label_name, label_display_name| -%>
  <% filtered_prs = pull_requests.select do |pr|
    if label_name == 'other'
      pr.labels.none? { |label| ['improvement', 'bug', 'enhancement'].include?(label.name) }
    else
      pr.labels.any? { |label| label.name == label_name }
    end
  end -%>
  <% next if filtered_prs.empty? -%>

### <%= label_display_name %>
  <% filtered_prs.each do |pr| -%>
- #<%=  pr.number %> <%= pr.mention %>
  <% end -%>
<% end -%>

<details>
<summary>更新内容を振り分ける方法</summary>

更新内容を振り分ける方法は以下の通りです。

- 新機能: `enhancement` ラベルをPRに付与
  - 新たに追加された機能がある場合に付与します
- 改善: `improvement` ラベルをPRに付与
  - 既存の機能の改善がある場合に付与します
  - 既存機能の性能向上、最適化など
- バグ改修: `bug` ラベルをPRに付与
  - 既存機能に関するバグの修正がある場合に付与します

後からラベルを付与することも可能ですが、更新はそのままでは実行されません。
その場合は`git-pr-release` ジョブを手動再実行してください。

</details>

## このリリースに含まれるマージコミットの詳細

<details>
<summary>詳細を確認する</summary>

<% pull_requests.each do |pr| -%>
### <%= pr.merge_commit_sha %> <%= pr.title %> <%= pr.mention %>
<%= pr.body %>
<% end -%>
</details>

git-pr-release.ymlの内容も貼り付けておきます。--overwrite-descriptionを使って更新の都度上書きしないと意図した挙動になりません。上書きするので手動で書き換えても次の更新で消えてしまうので注意です。

workflow_dispatchを追加することで、任意のタイミングで手動実行することも出来るので、マージ後にラベルを付与し忘れたことを思い出しても対応する事ができます。

envの値などの詳細はここでは触れていないので、git-pr-releaseを参照してください。

git-pr-release.yml
# .github/workflows/git-pr-release.yaml
name: git-pr-release
on:
  push:
    branches:
    - develop
  workflow_dispatch:
jobs:
  git-pr-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0 # git-pr-release needs the git histories
      - uses: actions/setup-ruby@v1
        with:
          ruby-version: 3.1
      - run: gem install --no-document git-pr-release
      - run: git-pr-release --squashed --overwrite-description
        env:
          GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GIT_PR_RELEASE_BRANCH_PRODUCTION: master
          GIT_PR_RELEASE_BRANCH_STAGING: develop
          GIT_PR_RELEASE_LABELS: pr-release
          GIT_PR_RELEASE_TEMPLATE: .github/git-pr-release.erb
          TZ: Asia/Tokyo
1
1
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
1
1