GitHub リリースページのドラフトを自動生成してくれる Release Drafter を導入する

リリースページに ChangeLog というかリリースノートを書くのはかなり面倒です。 Release Drafter を使うと PR 単位でいい感じに リリースページのドラフトを生成してくれます。

Release Drafter の GitHub App は簡単に導入できますが、何やら Deprecated にしようという議論があるようです。

GitHub Apps - Release Drafter · GitHub

github.com

GitHub Actions で release-drafter 用のワークフローを使う方が無難かなと思います。

github.com

README にある通り、設定用の release-drafter.yml とワークフロー用の release-drafter.yml をそれぞれリポジトリの .github.github/workflows に配置するだけ。

設定用の release-drafter.yml。PR にラベルをつけておくと、Features や Bug Fixes に振り分けてくれます。ChangeLog に入れたくないような修正については除外用のラベルを指定することもできます。

name-template: 'v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
  - title: '🚀 Features'
    labels:
      - 'feature'
      - 'enhancement'
  - title: '🐛 Bug Fixes'
    labels:
      - 'fix'
      - 'bugfix'
      - 'bug'
  - title: '🧰 Maintenance'
    labels:
      - 'chore'
change-title-escapes: '\<*_&'
exclude-labels:
  - 'exclude from changelog'
template: |
   ## Changes

   $CHANGES

ワークフロー用の release-drafter.yml です。

name: Release Drafter

on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  update_release_draft:
    runs-on: ubuntu-latest
    steps:
      - uses: release-drafter/release-drafter@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

PR が作成・マージされる度に Draft が更新されていきます。

f:id:kondoumh:20210326150153p:plain

template に 'v$NEXT_PATCH_VERSION' を指定しているので、0.1.0 がリリースされている状態だと 0.1.1 のドラフトができます。

f:id:kondoumh:20210326150331p:plain

Draft を Edit して実際に作成したリリースページ。

f:id:kondoumh:20210326150353p:plain

手作業でリリース時にあたふたやってたことが継続的にオートメーション化された感じですね。PR のタイトルをちゃんと付けるようにすれば、ほとんど修正は不要でしょう。