如何通过 Jenkins 中的构建数量设置 android 应用程序版本?

Posted

技术标签:

【中文标题】如何通过 Jenkins 中的构建数量设置 android 应用程序版本?【英文标题】:How to set android app version by number of build in Jenkins? 【发布时间】:2014-11-05 06:04:50 【问题描述】:

推送成功后jenkins自动构建应用,但版本始终为1.0。我想在 jenkins 中插入相应构建的数量而不是“0”:1.119、1.120、1.121...

那是我的 build.gradle 文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:0.12.2'
    


allprojects 
    repositories 
        mavenCentral()
    

build.sh

#!/bin/bash
gradle clean 
gradle build
#. run_android_ui_tests.sh

我的 gradle.properities 只包含 cmets。

【问题讨论】:

【参考方案1】:

通过将这两个字符串插入到 build.gradle 的 defaultConfig 中解决了问题:

def env = System.getenv()
versionName "1." + env['BUILD_NUMBER']

而不是

versionName "1.0"

【讨论】:

【参考方案2】:

您必须对 Manifest 或 build.gradle 进行一些预处理。

示例

    第一个构建步骤是运行一些脚本来粘贴您需要的版本。 第二个构建步骤是构建您的应用。

我建议您获取可以在每个构建中确定的系统值,以便您可以在构建配置中自己更改应用程序的版本。

【讨论】:

好的,我必须插入什么命令?据我了解,我应该在 java 中粘贴类似 "gradle.setAppVersion("1." + String.valueOf(getLasJenkinsBuildNumber() + 1))" 的内容。但是这个字符串在 bash 中到底是什么样子的呢? 例如,您可以在 ***.com/questions/14895123/… 找到您需要的示例。或在这里jeffreysambells.com/2013/02/14/…【参考方案3】:

最好的方法是为此使用 gradle 发布插件。使用它,您可以在清单文件中执行自动版本更新。你可以有一个look here

您可以使用它来标记您的源代码树以及不同的版本。

【讨论】:

【参考方案4】:

build.gradle 中的配置应该是

defaultConfig 
    ...

    versionName System.getenv("APP_VERSION") as String ?: "3.0.0 (Default)"

    ...

Jenkins Configuration for parse the build parameter

【讨论】:

以上是关于如何通过 Jenkins 中的构建数量设置 android 应用程序版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何限制Jenkins并发多分支管道构建?

如何设置 SBT 构建以在 Jenkins 测试失败时返回零退出代码?

应该如何设置 Jenkins 中的 Ivy 构建项目?

jenkins只能同时构建2个Job怎么办?

jenkins使用教程之系统设置

如何区分 xcconfig 文件中的“Ad Hoc”和“App Store”代码签名身份?