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を直接叩くことで解決した。