Reputation: 1144
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
value of in the build.gradle
when Jenkins build the job. I know we can get the buildNumber with the $BUILD_NUMBER
env variable, but how to get the versionName
?
Upvotes: 12
Views: 10014
Reputation: 21
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
Upvotes: 2
Reputation: 123
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}" ;
}
Upvotes: 7
Reputation: 1046
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
Upvotes: 8