从Jenkins读取build.gradle的versionName

eja*_*jay 6 versioning android jenkins android-gradle-plugin

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

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

clo*_*ure 7

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

task printVersion{
  doLast {
    print android.defaultConfig.versionName + '-' + android.defaultConfig.versionCode
  }
}
Run Code Online (Sandbox Code Playgroud)

使用以下命令进行测试:./gradlew -q printVersion

1.8-13
Run Code Online (Sandbox Code Playgroud)

然后在jenkins管道中,在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}" ; 
   }
Run Code Online (Sandbox Code Playgroud)


sga*_*gel 6

您可以通过添加确定该的Execute Shell步骤versionName并使用EnvInject插件将其导出为环境变量来执行此操作

假设您build.gradle包含:

versionName = myname
Run Code Online (Sandbox Code Playgroud)

您可以添加以下脚本:

v=$(cat build.gradle  | grep versionName | awk '{print $3}')
echo MY_VERSION_NAME=${v} > env.properties
Run Code Online (Sandbox Code Playgroud)

  • @ejay,您可以简单地使用** tr **删除`“字符:v = $(cat build.gradle | grep versionName | awk'{print $ 3}'| tr -d \”)) (2认同)