Git の最新のタグをバージョンとしてサーバ起動時に出力する、ということを Gradle を使って実現しました。gradle-release-plugin あたりがこのへんも面倒見てくれるかなと思ったのだけれど、たいした手間でもないので自前で。
Gradle でビルド時に最新のタグ名を app-version.txt に書いておく。
build.gradle
task updateVersion << {
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--all'
standardOutput = stdout
ignoreExitValue = true
}
return stdout.toString().trim()
}
def version = getVersionName()
println("Version: ${version}")
new File("src/main/resources/app-version.txt").withWriter { out ->
out.writeLine(version)
}
}
processResources.dependsOn(updateVersion)
サーバ起動時に読んで出力。
printVersionNumber()
private def printVersionNumber() {
info(s"Server ($getVersionNumber) has been started.")
}
private def getVersionNumber: String = {
io.Source.fromInputStream(
this.getClass.getClassLoader.getResourceAsStream("app-version.txt")).mkString.trim
}
自動生成するものはバージョン管理したくないので .gitignore に書いておく。
src/main/resources/app-version.txt