GitHub

リリースノートをマージされたPull Requestのラベルから自動生成する

Katz

GitHubのリリースノートをマージされたPull Requestのラベルごとにカテゴリ分けして自動生成する方法について解説します。

前提 : 運用フローのイメージ

以下のステップでリリースノートを作成する運用フローを想定してGitHubのリポジトリをセットアップします。この記事では各ステップの実施手順については省略しますのでご了承ください。

番号タイトル
1Pull Requestを作成する
2Pull Requestにラベルを付ける
3Pull Requestをdevelopブランチにマージする
4developブランチの最新のコミット地点にバージョンタグを作成する
5作成したバージョンタグからリリースを作成する

準備 : Pull Requestのラベルを定義する

上記の運用フローのStep2でPull Requestのラベルを付けるために、GitHubのリポジトリに以下のラベル定義を以下の手順で追加しておく。

手順

  1. GitHubリポジトリのIssuesにアクセスする
  2. IssuesのLabelsをクリックして、ラベル一覧を表示する
  3. LabelsのNew labelをクリックして、以下のラベル定義を追加する

定義

名称内容
feature機能追加を実施したPull Requestにつけるラベル
refactoringリファクタリングを実施したPull Requestにつけるラベル
dependencies依存関係の更新を実施したPull Requestにつけるラベル
bugfixバグ修正を実施したPull Requestにつけるラベル
choreバージョン更新などを実施したPull Requestにつけるラベル

準備 : リリースノートを自動生成する設定を変更する

リリースノートの記載をする際にGenerate release notesをクリックした時のフォーマットを.github/release.ymlで変更できる。今回は.github/release.ymlを新たに定義してラベル単位でマージしたPRを一覧表示できるようにする。

手順

  1. .github/release.ymlを新規追加する
  2. release.ymlのcategoriesにPull Requestのラベルを定義する

定義

# .github/release.yml
changelog:
  categories:
    - title: "🚀 New Features"
      labels:
        - "feature"

    - title: "🛠 Refactoring"
      labels:
        - "refactoring"

    - title: "📦 Dependencies"
      labels:
        - "dependencies"

    - title: "🐛 Bug Fixes"
      labels:
        - "bugfix"

    - title: "🧹 Maintenance"
      labels:
        - "chore"

    - title: "🪼 Other"
      labels:
        - "*"
パラメータ説明
changelog.exclude.labelsリリースノートに表示しないプルリクエストのラベル一覧。
changelog.exclude.authorsリリースノートから除外するユーザーまたはボットのログインハンドルの一覧。
changelog.categories[*].title必須。リリースノートの変更カテゴリのタイトル。
changelog.categories[*].labels必須。このカテゴリに適用するラベル一覧。* を使用すると、前のカテゴリに該当しないすべてのプルリクエストをキャッチできる。
changelog.categories[*].exclude.labelsこのカテゴリから除外するプルリクエストのラベル一覧。
changelog.categories[*].exclude.authorsこのカテゴリから除外するユーザーまたはボットのログインハンドルの一覧。

動作確認 : リリースノートをラベルから自動生成する

手順

  1. Gitでタグを追加してGitHubにPushする
  2. GitHubのTagsにてタグをクリックする
  3. GitHubの任意のタグページにでCreate release from tagをクリックする
  4. Generate release noteをクリックしてリリースノートをラベルから自動生成する

確認結果

参考文献

ABOUT ME
Katz(Yusuke Katsuragawa)
Katz(Yusuke Katsuragawa)
Androidエンジニア
AndroidエンジニアをやっているKatzです。最近はKotlin Multiplatformを中心にやっています。経歴やお仕事の依頼については、私のプロフィールに詳細を記載していますので、ご確認ください。
記事URLをコピーしました