繁体   English   中英

如何在构建服务器和工作站之间同步Gradle / Android versionCode

[英]How to sync Gradle/Android versionCode between build server and workstation

当前,Bamboo会听取有关任何更改的Git存储库。 发生更改时,构建过程开始,并将(Bamboo)内部版本号加1。

我认为最好将相同的内部版本号用于Android项目(versionCode),以便应用程序的用户始终可以引用他/她收到的实际内部版本。 这样,内部版本号在构建服务器上从1变为2。 只有工作站不知道这一点,仍然使用版本1。

有什么办法可以同步此内部版本号?

尝试过: 我的一个朋友建议的一种可能的解决方案是使用git命令获取提交号: git rev-list HEAD --count很棒。 唯一的缺点是您无法在Bamboo中正确更改内部版本号。 因此,Bamboo的内部版本号应该领先。

顺便说一句,我正在使用Android Studio和Gradle

可以将Bamboo配置为在构建时将清单中的versionCode值设置为内部versionCode号,因此无需将此更改传播回进行开发的位置。 要配置Bamboo来执行此操作,请将脚本任务添加到构建计划中(在实际构建任务之前),其主体为:

sed -i 's/android:versionCode="[[:digit:]]*"/android:versionCode="${bamboo.buildNumber}"/' AndroidManifest.xml

是的,使用gradle非常容易。 您必须在gradle脚本中检索最新的构建结果,并将其放入versionCode中。

这就是您需要的(记住要更改变量以引用您的服务器):

def getBambooNumber(){
    def url = "https://bambooServer:bambooPort/rest/api/latest/result/PROJECT-BAMBOO-ID/latest.json?os_authType=basic".toURL()
    def authValue = "USER:PASSWORD".bytes.encodeBase64().toString()
    def json = new JsonSlurper().parseText(url.getText(requestProperties : ["Authorization" : "Basic " + authValue]))
    return json.buildNumber + 1 // +1 to Get the new build number
}


def bambooBuild = bambooBuildNumber()

android {
    ...

    defaultConfig {
        ...
        versionCode bambooBuild
        //This allows you to access in BuildConfig to the bamboo build
        buildConfigField "Integer", "BAMBOO_BUILD", "${bambooBuild}"
        ...
    }

    ...
}

让我知道这是否适合您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM