从 Jenkins 读取 build.gradle 的版本名称

Read versionName of build.gradle from Jenkins

我正在使用 Jenkins 构建我的 Android 应用程序。 在每个版本中,我都会获得一些信息,例如版本号等...

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

您可以通过添加确定 versionName 的执行 Shell 步骤并使用 EnvInject Plugin.

将其导出为环境变量来执行此操作

假设您的 build.gradle 包含:

versionName = myname

您可以添加此脚本:

v=$(cat build.gradle  | grep versionName | awk '{print }')
echo MY_VERSION_NAME=${v} > env.properties

更好的方法是在 build.gradle 中添加 "printVersion" 任务。 app/build.gradle

task printVersion{
  doLast {
    print android.defaultConfig.versionName + '-' + android.defaultConfig.versionCode
  }
}

测试它:./gradlew -q printVersion

1.8-13

然后在jenkins pipeline中,在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}" ; 
   }

示例: gradle properties | grep "version" | awk '{print }'

关于詹金斯:

def versionInfo = sh (
  script: "gradle properties | grep 'version' | awk '{print }'",
  returnStdout: true
).trim()
println versionInfo