Blog

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
}

まあ、そんな感じです。