GitHub にはリリースノートを自動的に作る機能があって,マージされたプルリクエストをまとめたりできる👌 OSS ライブラリで semver に沿ってリリースノートを作るのも便利だし,仕事で使っているプライベートリポジトリでも「いつどのプルリクエストがデプロイされたのか」をパッと確認することができて便利❗️
機能を試すだけなら簡単で,GitHub リポジトリで Releases > Draft a new release > Generate release notes
と選択するとデフォルト設定でリリースノートを自動的に作ってくれる \( 'ω')/
リリースノートをカスタマイズする
👾 .github/release.yml
リリースノートの本文をカスタマイズするために .github/release.yml
ファイルを作る📝 設定はいくつかあって詳しくはドキュメントに載っているけど,今回はできる限りシンプルな設定にしてみた👌簡単に言うと Dependabot 経由のプルリクエスト(デフォルトで dependencies
ラベルが付く)とそれ以外のプルリクエストをカテゴライズしてまとめている❗️
changelog: categories: - title: Dependencies 🤖 labels: - dependencies - title: All Changes labels: - "*"
ドキュメントに載っている例だともっと細かくて,Semver-Major
ラベルを付けたプルリクエストは Breaking Changes 🛠 にカテゴライズして,Semver-Minor ラベルを付けたプルリクエストは Exciting New Features 🎉 にカテゴライズしている💡
# .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: - "*"
gh release
コマンド
そして,リリースノートを自動的に作るときは GitHub リポジトリでポチポチすることもできるけど,gh release
コマンドでシュッと作ることもできる👌
$ gh release create v1.0.0 --generate-notes
GitHub Actions でリリースノートを自動的に作る
さらに自動化を推進するために GitHub Actions でリリースブランチ(main
ブランチ・prd
ブランチなど)にプルリクエストをマージしたら自動的にリリースノートを作れるようにする❗️
今回は softprops/action-gh-release を使う.個人的に一番使いやすそうだった.ちなみに GitHub Actions 公式の actions/create-release は2021年にアーカイブされている😇
👾 .github/workflows/create-release.yml
ザッとこんな感じ👌今回は main
ブランチにプルリクエストをマージしたら実行するようにした.そして,個人プロジェクトでは semver は必要なく,リリース名(タグ名)はタイムスタンプにした.ちなみにデフォルトでは GitHub リポジトリのデフォルトブランチに対してリリースを作るけど,target_commitish
パラメータを指定すれば任意のブランチを指定できる.
name: Create Release on: push: branches: - main env: TZ: Asia/Tokyo permissions: contents: write jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: echo "TAG_NAME=$(date +'%Y%m%d-%H%M')" >> ${GITHUB_ENV} - name: Create Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.TAG_NAME }} generate_release_notes: true target_commitish: main
動作確認
個人的に Terraform の検証をするのに使っているサンドボックスリポジトリに導入してみて,2週間ほど運用しているけど,期待通りにリリースノートを作れている👏
これは便利だ〜 \( 'ω')/