LoginSignup
2
3

More than 3 years have passed since last update.

gradleプロジェクトでリリースバージョンとリリースノートを自動作成

Posted at

背景

Javaプロジェクトを開発している時にいくつか課題があり、それぞれ以下のように解決しました。

上記をもう少し自動化してみようというのがこの記事の目的となります。前提として、bashコマンドを用いたスクリプトを実行するため、bashが利用できる環境であることが条件となります(macOS Big SurAmazon Linux 2では動作確認済み)。

事前準備

grenコマンドのインストール

gren-release-notesパッケージのインストールの手順に沿ってgrenコマンドが利用できるようにします。

build.gradleの設定

nebulaプラグインを利用するため、gradleプロジェクトでバージョンを自動指定を参考にbuild.gradleを設定します。

GitHub CLIのインストール

GitHub CLIは、GitHub上でリリースドラフトを作成するために利用します。以下の手順でインストールと設定をします。

  1. 利用する環境に合わせて、Installationを参考にインストールします。
  2. 先ほどと同様に、個人アクセストークンを作成します。権限はreporead:orgにチェックを入れます。
  3. 一度だけgh auth loginを実行して認証します。echo {個人アクセストークンの文字列} | gh auth login --with-tokenを実行します。

上記設定の後、GitHubリポジトリに移動してgh repo viewを実行し、結果が表示されたらOKです。

スクリプトの実行

https://github.com/kazntree/nebula-chain にあるrelease.shをリリースしたいリポジトリ内の任意の場所に置いて実行すると、新しいバージョンでリリースして、さらにプルリクエストを基にリリースノートを作成します。

$ ./script/release.sh
Do you want to release and publish? [y/n]
y
release start.
Inferred project: nebula-chain-test, version: 0.4.0

> Task :release
Tagging repository as 0.4.0
Pushing changes in [0.4.0] to origin

BUILD SUCCESSFUL in 7s
11 actionable tasks: 10 executed, 1 up-to-date
https://github.com/kazntree/nebula-chain-test/releases/tag/0.4.0
Getting gren config from local file /home/ec2-user/github/nebula-chain-test/.grenrc.yml

🤖  - Generate release notes:
===================================
✔ Releases found: 4
✔ Tags found: 0.4.0, 0.3.0
✔ Pull Requests found: 1
✔ 0.4.0 has been successfully updated!
See the results here: https://github.com/kazntree/nebula-chain-test/releases/tag/0.4.0

メジャーバージョンを上げたい場合はrelease.sh -Prelease.scope=majorを、パッチバージョンを上げたい場合はrelease.sh -Prelease.scope=patchを指定します。

release.shの説明

release.shで行っていることは、以下のとおりです。

  • 事前準備が終わっているか確認する(コマンドの存在など)
  • コマンド実行の確認(yで実行)
  • nebulaプラグインを利用して、新しいバージョンをリリース
  • GitHub CLIを利用して、GitHub上で新しいリリースノートを作成
  • grenコマンドを利用して、前回リリースから取り込まれたプルリクエスト一覧をリリースノートへ上書き
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3