GitHub のリリースノート自動生成機能を使う
昨年10月 GitHub のリリース機能がリニューアルされ、自動的なリリースノート生成とリリースページ作成 UI の改善が実施されました。
Improvements to GitHub Releases - generally available | GitHub Changelog
自動的なリリースノート生成については、これまで Release Drafter が使われてきましたが、この機能が本家に取り込まれた感じですね。
Release Drafter は PR がマージされるたびに次回リリース用のドラフトが更新されていく動きでしたが、本家のジェネレータはリリース作成時に作動します。
Automatically generated release notes - GitHub Docs
サンドボックスのリポジトリを作成して試しました。ドキュメントのサンプル通り、release.yml を .github に配置します。
# .github/release.yml
changelog:
exclude:
labels:
- ignore-for-release
authors:
- octocat
categories:
- title: Breaking Changes 🛠
labels:
- Semver-Major
- breaking-change
- title: Exciting New Features 🎉
labels:
- Semver-Minor
- enhancement
- title: Other Changes
labels:
- "*"
Release Drafter とほぼ同じ構文です。PR に付与したラベルにより Breaking Changes や Features といったカテゴリに PR と author を並べてくれます。テスト追加やリファクタリングなどリリースノートに含めたくない PR を除外するためのラベルや dependabot など除外したい author も exclude に指定可能です。
PR を2つ作成し、それぞれ enhancement
、ignore-for-release
のラベルをつけました。
この状態で v0.2.0 のタグを作り、Draft a new release
ボタンをクリックしてリリースを作成。
リリース作成画面で v0.2.0 のタグを選択し、リリース記述用のテキストボックス未入力状態で Auto-generate release notes
ボタンをクリック。
.github/release.yml の定義に従って、ドラフトが挿入されました。
プレビューで確認して公開。ちゃんと enhancement
ラベルの PR だけ反映されていていい感じのリリースページになりました。
Release は GitHub API でも作れます。Create API に generate_release_notes
という boolean のパラメータがちゃんと追加されています。
https://docs.github.com/ja/rest/reference/releases#create-a-release
タグが作成されたら GitHub Actions で リリースノート付きの Pre-release までを自動作成し、最終的に人が確認してリリースというワークフローも構築可能です。