gradle でブランチ名からバージョン番号を指定する
うちの職場では、jar を jenkins でビルドして、nexus enterprise にアップすることにより、実際にデプロイされたコードの履歴を保持するというようなことをやっている。
なので、jar にバージョン番号を指定する必要がある。
現在、ブランチ設計は、master がリリース用。develop-1.1, develop-2.0 のようにバージョン番号がついた開発ブランチで SNAPSHOT バージョンを作成し、複数の alpha 環境にリリースしている。
build.gradle の中にバージョン番号を書いたりしていたのだが、まあ問題があって、バージョン番号を直ガキしている上に 1.1.0-SNAPSHOT などと書いていると、develop-1.1 → develop-2.0 ブランチにマージなどしているとそこがコンフリクトしがちである。
そこで、build.gradle では develop-1.1 などのブランチ名から取り出したバージョン番号を採用することにする。 具体的には以下のとおり。
// Release version.
final String RELEASE_VERSION = "2.1.0"
String gitBranch = ["sh", "-c", "cd ${project.rootDir} ; git rev-parse --abbrev-ref HEAD"].execute().in.text.trim()
def m = gitBranch =~ "develop-([0-9]+\\.[0-9]+)"
if (m.matches()) {
version = m.group(1) + '.0-SNAPSHOT'
println("version: ${version}")
} else {
version = RELEASE_VERSION
}
まあ、そんな感じです。
Published: 2015-09-28(Mon) 17:28