I\'m using Jenkins for my Android app builds. On every build, I get some info, like build number, etc...
I\'m searching a way to read the versionName
v
Example:
gradle properties | grep "version" | awk '{print $2}'
On jenkins:
def versionInfo = sh (
script: "gradle properties | grep 'version' | awk '{print $2}'",
returnStdout: true
).trim()
println versionInfo
You could do this by adding an Execute Shell step which determines the versionName
, and exporting it as an environment variable using the EnvInject Plugin.
Assuming your build.gradle
contains:
versionName = myname
You can add this script:
v=$(cat build.gradle | grep versionName | awk '{print $3}')
echo MY_VERSION_NAME=${v} > env.properties
A better way to do this is add a "printVersion" task in build.gradle. app/build.gradle
task printVersion{
doLast {
print android.defaultConfig.versionName + '-' + android.defaultConfig.versionCode
}
}
Test it with: ./gradlew -q printVersion
1.8-13
Then in jenkins pipeline, add a stage after git:
stage('printVersion') {
def versionInfo = sh (
script: './gradlew -q printVersion',
returnStdout: true
).trim()
echo "VersionInfo: ${versionInfo}"
//set the current build to versionInfo plus build number.
currentBuild.displayName = "${versionInfo}-${currentBuild.number}" ;
}