TL;DR This post is a hands-on description how to show the current version - plus Git commit hash - during startup together with your Spring Boot application banner.
Basically I followed the answer in Getting the Gradle.build version into Spring Boot and the linked Spring Boot reference documentation. Automatic property expansion using Gradle
Within the Spring Boot application.yaml
I added the properties application.title
and application.version
like follows:
application:
title: ${name}
version: ${version}
With a trick similar to Automagically generate versionCode and versionName of an Android build we create a nice version
including a short Git commit hash - like this 0.1.0-cc627aa3
.
With the help of the library grgit
we pimp the version
in our gradle.build
:
version = '0.1.0' + getVersionNameExtension()
You'll have to add the library to your buildscript
section:
buildscript {
dependencies {
...
classpath 'org.ajoberstar:grgit:1.9.3'
...
}
}
...and provide a static method like this:
static getVersionNameExtension() {
try {
def git = org.ajoberstar.grgit.Grgit.open()
def versionNameSuffix = "-${git.head().getAbbreviatedId(8)}"
git.close()
return versionNameSuffix
} catch (ignored) {
return ""
}
}
Next I prepared a Spring Boot banner - with the well received Online Spring Boot Banner Generator
,------. ,--. ,--. ,-----. ,--.
| .--. ' | | ,--,--. ,--,--, ,---. ,-' '-. ,---. | |) /_ ,---. ,-' '-.
| '--' | | | ' ,-. | | \ | .-. : '-. .-' ( .-' | .-. \ | .-. | '-. .-'
| | --' | | \ '-' | | || | \ --. | | .-' `) | '--' / ' '-' ' | |
`--' `--' `--`--' `--''--' `----' `--' `----' `------' `---' `--'
Below the generated banner I added:
${application.title} - ${application.version}
To make those variable available to Spring Boot we process the resources before we compile the code:
compileJava.dependsOn(processResources)
processResources {
filesMatching("**/*.yaml") {
expand project.properties
}
}
On production this will render as follows during startup of the application:
,------. ,--. ,--. ,-----. ,--.
| .--. ' | | ,--,--. ,--,--, ,---. ,-' '-. ,---. | |) /_ ,---. ,-' '-.
| '--' | | | ' ,-. | | \ | .-. : '-. .-' ( .-' | .-. \ | .-. | '-. .-'
| | --' | | \ '-' | | || | \ --. | | .-' `) | '--' / ' '-' ' | |
`--' `--' `--`--' `--''--' `----' `--' `----' `------' `---' `--'
planets-bot - 0.1.0-cc627aa3
Whenever you analyze some logs you'll always know which code produced the given output.