为了改善我们的质量检查工作流程,我们希望为Github上的每个提取请求自动构建一个APK文件,以便我们可以在合并分支之前对其进行测试。我们已经找到了如何构建文件,但是现在我们想知道如何将其集成到我们的工作流程中。
似乎大多数可用的Beta程序(例如Crashlytics Beta,Google Play)大多专注于在发行前不久创建一个Beta版本,但不允许并行托管多个APK。
这是我们理想的工作流程的一个示例:
我们特别不希望在合并pull-request之后测试APK,而要在我们的develop分支中弹出更少错误之前进行测试。
答案 0 :(得分:2)
实际上,Crashlytics允许具有多个版本的APK。 Ech版本可以有各自的Version字符串,当然也可以有release notes,以帮助质量检查人员找到正确的APK。
问题的第3点可以这样描述: CI已配置为将构建上传到Crashlytics。 可以通过gradle任务来实现:
gradle assembleRelease crashlyticsUploadDistributionRelease
在这种情况下,具有特殊的构建类型(pullrequest
)非常有用。您可以通过通讯组,有关构建的通知和发行说明来指定特殊的分发规则。
build.gradle:
//example function for change log
def getLastGitCommitMessage() {
try {
"git log -1 --pretty=%B".execute().text.trim()
} catch (e) {
'Undefined message.'
}
}
android {
buildTypes {
...
pullrequest {
//invitation
ext.betaDistributionGroupAliases = "QA, devs"
// notification
ext.betaDistributionNotifications = true
// last commit message as release notes
ext.betaDistributionReleaseNotes = getLastGitCommitMessage()
}
}
}
在这种情况下,构建和上传命令将如下所示:
gradle assemblePullrequest crashlyticsUploadDistributionPullrequest
答案 1 :(得分:0)
使系统成为服务器。
之后,在生成APK时,请提供服务器路径。 如果您这样做,那么每次您的APK更新时, 因此,您需要使用一个变量?哪个决定您的apk是否部署在本地服务器上。
完成开发后,将其设置为true,然后将apk复制到本地服务器上。然后,质量检查小组可以轻松访问它。
一些演示代码。
debug {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def apk = output.outputFile;
def newName;
newName = apk.name.replace("-" + variant.buildType.name, "")
.replace(project.name, name);
newName = newName.replace("-", "-" + version + "-" + milestone +
"-" + build + "-");
output.outputFile = new File(apk.parentFile, newName);
}
}
}
答案 2 :(得分:0)