GitHub Actionsからリリースノートの自動生成機能を使う
概要
GitHubにはリリースノートの自動作成機能がある。
.github/release.yml
をおいておけばそのフォーマットどおりにラベルをグルーピングしてサマリを作ってくれる。
Automatically generated release notes - GitHub Docs
yamlのサンプルは下記。
https://docs.github.com/repositories/releasing-projects-on-github/automatically-generated-release-notes#example-configuration
これをGitHub Actionsから使う方法を調べたので記録する。
結論
GitHub CLIを利用する。
全体は下記
.github/create-release.yml
name: crelate release on: push: tags: - "v*.*.*" jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Create a release run: | gh api repos/${{ github.repository }}/releases -f tag_name="${GITHUB_REF#refs/tags/}" -F generate_release_notes=true env: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
リリースノート作成のyamlはサンプルそのまま
.github/release.yml
# .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: - "*"
上記の設定で、タグが打たれたときにリリースを作り、リリースノートを決まったフォーマットで自動生成することが可能。
Create Release APIにはgenerate_release_notesというオプションがあり、これをtrueにすることで、.github/release.yml
のとおりにリリースノートを作ることが可能。
最初はhttps://github.com/softprops/action-gh-releaseを使ってなんとかできないか検証していたが、APIを直接叩くことで解決した。