GitHubのリリースノートを作成するのを少しでも楽にするためにRelease Drafterというものを試してみました。

Release Drafter


いくつかのScalaのOSSでRelease DrafterというGitHub Appが使用されているのを観測していたので、以前からこちらを試してみようかと思っていたのですが、なかなか時間が取れないという状態でした。今回少し試す時間と意欲がでたのでやってみたという感じです。

下記のような感じでマージされたPRの内容を自動でリリースノート(ドラフト)として作成してくれます。(※Release Drafterインストール後のPRのみです。PR出さずにブランチに直接Pushしたものも対象外です。)

また、PRに設定したラベルに応じて、どの見出しでリリースノートに追記するかということを指定できます。例えば下記の#20のものは上の画像ではBreaking changeの見出しのところに追記されているのがわかります。

ラベルを何も設定しなかった場合(下記の#20のような場合)は上の画像でのChangesの見出しに追記されています。

インストール


Release Drafter右上のボタンからインストールするリポジトリを設定します。

設定


後は、インストールしたリポジトリに設定ファイルを作成します。今回は提供してあるGitHub Actionsを使うことにしました。実物はここにおいてます

GitHub Actionsの設定

.github/workflowsディレクトリにrelease-drafter.ymlを作成して下記を記述します。これは公式に記述されていたものそのままです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
name: Release Drafter

on:
push:
branches:
- master

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

Release Drafterの設定

次にRelease Drafterの設定を書きます。.githubディレクトリにrelease-drafter.ymlを作成します。ファイル名は先ほどのGitHub Actionsと同じですが、役割は別物です。これはどういったラベルの時にどの見出しに追記するかとかそういう設定を書きます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
name-template: 'v$NEXT_PATCH_VERSION'
tag-template: 'v$NEXT_PATCH_VERSION'
categories:
- title: 'Breaking change'
labels:
- 'Breaking Change'
- title: 'Features'
labels:
- 'feature'
- 'enhancement'
- title: 'Fixes'
labels:
- 'bug'
- title: 'Dependencies'
labels:
- 'dependencies'
- title: 'Refactor'
labels:
- 'refactor'
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
template: |
## Changes
$CHANGES

これらをマージすると次回以降のPRをマージしたタイミングから自動でリリースノートを書いてくれます。べんり。

感想


ドキュメントにも書いてありますが、リポジトリに対する書き込み権限を与えないといけないのが少し気になってしまいます(これはGitHubの仕様的にしかたないようです)が、リリースノートを書くのは存外手間な作業なので使ってみるのもありなのではないかと思いました。