[GitHub] コミットと同時にリリースを作成したい!
GitHub公式のActionにタグをプッシュするとリリースを作成してくれる create-releaseがありますが、わざわざタグを作ってプッシュする必要があり、面倒だったのでプッシュと同時にリリースを作成してくれるActionを作りました。
Release-with-commit
https://github.com/ChanTsune/release-with-commit
やりたいこと
特定のコミットメッセージを付与したコミットをGitHubにプッシュすると同時にリリースを作成する。
流れ
- リリース用の作業をする
- 作業内容をコミットする
- コミットメッセージが事前に設定した正規表現にマッチすればリリースを作成する
Actionを設定する
さっそくActionを設定します。
リポジトリの.github/workflows
ディレクトリ以下に.yml
ファイルを作成します。
中身にActionの設定を記述します。
以下は一例です。
name: Release with commit
on:
push:
branches:
- master
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: ChanTsune/release-with-commit@v1.0.0
with:
regexp: "Release (\\d+([.]\\d+)*)\n*((\\s|\\S)+)"
regexp_options: "us"
release_name: "version $1"
tag_name: "v$1"
body: "$3"
draft: false
prerelease: false
env:
GITHUB_TOKEN: '${{secrets.GITHUB_TOKEN}}' # GitHubの操作をするために必要なトークン情報
プッシュしたタイミングで動作して欲しいのでアクションの発火条件をmasterにプッシュされたタイミングに設定しています。
パラメータの説明
regexp
… 正規表現を設定します。コミットメッセージがこの正規表現にマッチした場合にリリースを作成します。(必須)regexp_options
… 正規表現のオプションを設定できます。RegExp
オブジェクトのオプションです。release_name
… リリース時のタイトルです。$n
を利用する事で正規表現にマッチしたグループを利用できます。tag_name
… リリースにつけるタグ名です。$n
を利用する事で正規表現にマッチしたグループを利用できます。body
… リリースの詳細です。$n
を利用する事で正規表現にマッチしたグループを利用できます。draft
…true
が設定されている場合はリリースをドラフトに設定します。デフォルトはfalse
prerelease
…true
が設定されている場合はプレリリースに設定します。デフォルトはfalse
他にもちょっとしたオプションパラメータがありますがactions/create-release
と同じなので省略します。
詳細は、README.mdをご覧ください。
動かしてみる
上記の例を利用して動かすと次のようなコミットメッセージの場合にリリースが作成されます。
Release 1.1.1
- Fix
- typo
この場合、リリース時のタイトルが
version 1.1.1
タグが
v1.1.1
リリースの詳細が
- Fix
- typo
な状態でリリースが作成されます。
気をつけること
マージしたタイミングでアクションを発火させようとすると、マージコミットを作成するとうまく動いてくれないのでリベースするかスカッシュするとうまく動作してくれます。
おわりに
リリースを作成する場合に特定のコミットメッセージを設定するようにしているプロジェクトも多いのではないかと思うので、コミットメッセージからリリースの作成ができるとちょっと便利ですね。
かく言う私もリリースのタイミングのコミットメッセージのテンプレートを用意して使っているのでこいつのお陰ですこし幸せになれました。