[英]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.