为了改进我们的 QA 工作流程,我们希望为 Github 上的每个拉取请求自动构建一个 APK 文件,以便我们可以在分支合并之前对其进行测试。我们已经想出了如何构建文件,但我们现在想知道如何将其集成到我们的工作流程中。
似乎大多数可用的 Beta 程序(例如 Crashlytics Beta、Google Play)主要侧重于在发布前不久创建一个 Beta 版本,但不允许同时托管多个 APK。
这是我们理想工作流程的示例:
- 开发人员完成编码并创建拉取请求
- 测试运行
- 如果测试成功,将自动构建一个 APK 并上传到某处(这是我们试图找出的部分)
- QA 查看拉取请求,应该能够在他们的测试设备上轻松下载正确的 APK
- 如果在 QA 期间没有问题,则合并拉取请求
- APK 文件自动删除
我们特别不想在拉取请求合并后测试 APK,而是在我们的开发分支中弹出更少的错误之前进行测试。
最佳答案
实际上 Crashlytics 允许有多个版本的 APK。 每个版本都可以有自己的版本字符串,当然还有 release notes , 以帮助 QA 找到正确的 APK。
问题中的第 3 点可以这样描述: CI 配置为将构建上传到 Crashlytics。 可以通过gradle task来实现:
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
关于android - 我如何为每个拉取请求托管一个 Android APK 文件,以便 QA 可以在合并之前测试它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521009/