GitHub のリリースノート自動生成機能を使う

| 2 min read
Author: masahiro-kondo masahiro-kondoの画像

昨年10月 GitHub のリリース機能がリニューアルされ、自動的なリリースノート生成とリリースページ作成 UI の改善が実施されました。

Improvements to GitHub Releases - generally available | GitHub Changelog

自動的なリリースノート生成については、これまで Release Drafter が使われてきましたが、この機能が本家に取り込まれた感じですね。

GitHub - release-drafter/release-drafter: Drafts your next release notes as pull requests are merged into master.

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つ作成し、それぞれ enhancementignore-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 までを自動作成し、最終的に人が確認してリリースというワークフローも構築可能です。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み(2022-12-08)
  2. 直感が理性に大反抗!「モンティ・ホール問題」(2022-07-04)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する(2022-10-09)
  4. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する(2022-10-28)
  5. Podman Desktopがv1.0になったのでwindows版を試してみたところ、気付いたらv1.1に上がるくらいに機能豊富だった話(2023-06-09)
  6. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する(2022-09-25)
  7. VS Code で .NET MAUI の開発環境を構築する(macOS/iOS)(2023-08-14)
  8. Pytestを使ってみる(その2:VSCode拡張機能編)(2023-03-05)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する(2023-01-16)
  10. 統計学で避けて通れない自由度の話(2022-06-20)