TL;DR
PRをマージした際に、既存の最新のリリースタグのリビジョンをインクリメントするようにしました。
作ったもの: https://github.com/cacapouh/auto-release
リビジョンをインクリメントさせてタグ発行
例えば、0.0.1が既存の最新のリリースタグだった場合に、0.0.2で新規リリースタグを発行されます。
以下は実際に生成されたリリースノートとタグです。
- リリースノートについて
- タイトルはPRのタイトルを設定するようにしています
- ボディは最新のコミットメッセージを設定するようにしています
- ワークフローファイル内では、以下のコマンドによりリリースノートを作成しています
curl \
-X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d "$payload" \
"https://api.github.com/repos/${GITHUB_REPOSITORY}/releases"
PRのタイトルでリリースタグを指定してタグ発行
また、PRのタイトルにバージョンを記載した場合、
そのバージョンで新規リリースタグを発行するようにしました。
バージョンは正規表現で取得しています:
echo '${{ github.event.pull_request.title }}' | grep -oP '\b\d+\.\d+\.\d+\b | head -n 1' # ドット区切りの3連数値であれば何にでもマッチしてしまうため、プロダクトで利用する場合、もう少し制限を加えた方が良さそうです
おわりに
PRマージ時に自動でリリースタグを更新するワークフローを作成しました。
このワークフローを使って、リリースによる手作業を減らすことができれば幸いです