从Jenkins读取build.gradle的versionName

时间:2016-11-05 19:59:54

标签: android jenkins android-gradle versioning

我正在使用Jenkins进行Android应用构建。 在每次构建时,我都会获得一些信息,例如内部版本号等等。

当Jenkins建立工作时,我正在寻找一种方法来阅读versionName中的build.gradle值。我知道我们可以使用$BUILD_NUMBER env变量获取buildNumber,但是如何获取versionName

3 个答案:

答案 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