我正在使用Jenkins进行Android应用构建。 在每次构建时,我都会获得一些信息,例如内部版本号等等。
当Jenkins建立工作时,我正在寻找一种方法来阅读versionName
中的build.gradle
值。我知道我们可以使用$BUILD_NUMBER
env变量获取buildNumber,但是如何获取versionName
?
答案 0 :(得分:5)
您可以通过添加执行Shell步骤来执行此操作,该步骤确定versionName
,并使用EnvInject Plugin将其导出为环境变量。
假设您的build.gradle
包含:
versionName = myname
您可以添加此脚本:
v=$(cat build.gradle | grep versionName | awk '{print $3}')
echo MY_VERSION_NAME=${v} > env.properties
答案 1 :(得分:5)
一种更好的方法是在build.gradle中添加一个“ printVersion”任务。 app / build.gradle
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
},
"include": ["node_modules/angular-bootstrap-md/**/*.ts", "src/**/*.ts"]
}
使用以下命令对其进行测试:./gradlew -q printVersion
task printVersion{
doLast {
print android.defaultConfig.versionName + '-' + android.defaultConfig.versionCode
}
}
然后在jenkins管道中,在git之后添加一个阶段:
1.8-13
答案 2 :(得分:1)
示例:
gradle properties | grep "version" | awk '{print $2}'
在詹金斯上:
def versionInfo = sh (
script: "gradle properties | grep 'version' | awk '{print $2}'",
returnStdout: true
).trim()
println versionInfo