在持续集成中增加 Android 内部版本号
Increment Android build number in Continuous Integration
我正在使用 Android Studio,Gradle,git。
每次推送到 master 分支时,我都想构建一个新的应用程序版本,并将其上传到 Google Play 商店的 Alpha 频道。为此,我需要为每个构建增加应用程序的版本代码。
为此我似乎有几种选择:
- 在 Jenkins 构建期间增加数量并将更改的文件推送回 repo。
- 我不喜欢让我的构建服务器执行 pushes/commits。
- 用 git 挂钩增加数量。
- 我更不喜欢使用 git 修改文件的想法。如果我在度假,谁(在团队的其他成员中)会找到这个并知道如何处理它?
- 在另一台服务器上有一个文件(构建服务器可以直接访问),其中保存了当前版本。 Gradle 将访问它,增加它并再次保存它。
- 这看起来 'fragile' 但至少我可以有一个简单的 'increaseVersion' 任务只在服务器上执行。如果它坏了(如果我们移动服务器或其他东西),修复起来相当容易。
目前我最喜欢3个
有人有明确的方法吗?
我使用上面的 none — 和你一样,我不想为每个构建更改 repo,也不想更改任何文件。
Jenkins 对每个构建都有一个不断增加的值,通过 BUILD_NUMBER
环境变量公开。
在Gradle中,我在构建时以编程方式生成versionCode
值,使用BUILD_NUMBER
值确保versionCode
始终高于之前的构建.
我的片段 build.gradle
:
// Used to set the package version name and version code
ext.versionMajor = 1
ext.versionMinor = 2
android {
defaultConfig {
versionName computeVersionName()
versionCode computeVersionCode()
}
}
// Will return "1.2" in this example
def computeVersionName() {
// Basic <major>.<minor> version name
return String.format('%d.%d', versionMajor, versionMinor)
}
// Will return 120042 for Jenkins build #42
def computeVersionCode() {
// Major + minor + Jenkins build number (where available)
return (versionMajor * 100000)
+ (versionMinor * 10000)
+ Integer.valueOf(System.env.BUILD_NUMBER ?: 0)
}
所以我只需要在制作发布版本时更新顶部的两个值。对于所有其他构建类型,我可以让 Gradle/Jenkins 自动设置 versionCode
然后 upload to Google Play.
这也意味着,对于 Play 商店中列出的任何 alpha 版本,或通过检查 APK,我可以立即看到它来自哪个 Jenkins 构建,并从那里 git 提交。
我正在使用 Android Studio,Gradle,git。
每次推送到 master 分支时,我都想构建一个新的应用程序版本,并将其上传到 Google Play 商店的 Alpha 频道。为此,我需要为每个构建增加应用程序的版本代码。
为此我似乎有几种选择:
- 在 Jenkins 构建期间增加数量并将更改的文件推送回 repo。
- 我不喜欢让我的构建服务器执行 pushes/commits。
- 用 git 挂钩增加数量。
- 我更不喜欢使用 git 修改文件的想法。如果我在度假,谁(在团队的其他成员中)会找到这个并知道如何处理它?
- 在另一台服务器上有一个文件(构建服务器可以直接访问),其中保存了当前版本。 Gradle 将访问它,增加它并再次保存它。
- 这看起来 'fragile' 但至少我可以有一个简单的 'increaseVersion' 任务只在服务器上执行。如果它坏了(如果我们移动服务器或其他东西),修复起来相当容易。
目前我最喜欢3个
有人有明确的方法吗?
我使用上面的 none — 和你一样,我不想为每个构建更改 repo,也不想更改任何文件。
Jenkins 对每个构建都有一个不断增加的值,通过 BUILD_NUMBER
环境变量公开。
在Gradle中,我在构建时以编程方式生成versionCode
值,使用BUILD_NUMBER
值确保versionCode
始终高于之前的构建.
我的片段 build.gradle
:
// Used to set the package version name and version code
ext.versionMajor = 1
ext.versionMinor = 2
android {
defaultConfig {
versionName computeVersionName()
versionCode computeVersionCode()
}
}
// Will return "1.2" in this example
def computeVersionName() {
// Basic <major>.<minor> version name
return String.format('%d.%d', versionMajor, versionMinor)
}
// Will return 120042 for Jenkins build #42
def computeVersionCode() {
// Major + minor + Jenkins build number (where available)
return (versionMajor * 100000)
+ (versionMinor * 10000)
+ Integer.valueOf(System.env.BUILD_NUMBER ?: 0)
}
所以我只需要在制作发布版本时更新顶部的两个值。对于所有其他构建类型,我可以让 Gradle/Jenkins 自动设置 versionCode
然后 upload to Google Play.
这也意味着,对于 Play 商店中列出的任何 alpha 版本,或通过检查 APK,我可以立即看到它来自哪个 Jenkins 构建,并从那里 git 提交。