首页 > 解决方案 > 使用 gitLab ci/cd 时如何自动动态指定应用程序名称

问题描述

在我正在处理的 Android 项目中,我们使用 GitLab CI/CD 在 Diawi 中自动构建和上传 .apk 文件。在当前设置中,构建应用程序的名称是静态的,因为它需要被知道并作为 curl 请求发送到 Diawi 框架。脚本如下所示:

- ./gradlew assembleRelease && cp app/build/outputs/apk/release/app-release.apk app-release.apk && curl -v --http1.1  https://upload.diawi.com/ -F token=$DIAWI_TOKEN -F file=@app-release.apk -F find_by_udid=0 -F callback_emails="mymail@company.com"

但这会在手动测试过程中造成一些麻烦,因为同名的 .apk 文件很容易被错误或覆盖。

我的想法是在 .apk 文件的名称中添加一些元数据以使其唯一并避免此类错误。您对如何做到这一点有任何想法吗?

标签: androidcontinuous-integrationgitlab

解决方案


您可以做的第一件事是创建版本碰撞功能。您可以通过版本碰撞工具和 git sync 来完成。

对于版本碰撞,您可以使用我们的开源工具 - https://github.com/relizaio/versioning。现在,假设您通过名为 apk_version 的文件进行同步,您首先使用当前版本初始化此文件,例如:

docker run --rm relizaio/versioning -s YY.0M.Patch > apk_version

然后在您的 CI 上下文中,您可以使用类似

docker run --rm relizaio/versioning -s YY.0M.Patch -v $(cat apk_version) -a bump > apk_version

现在,在 GitLab CI 中,您需要有一个块来解决这个问题。请注意,您还需要在凹凸结束时提交 apk_version 文件。

如需灵感 - 请参阅此问题如何授予语义发布权限以将代码推送到 master以及我们在 GitLab 上的示例 CD 项目 - https://gitlab.com/taleodor/sample-helm-cd/-/blob/master/ .gitlab-ci.yml

此外,我的文章可能会有所帮助(请注意,此时它有点过时了):https ://worklifenotes.com/2020/02/27/automatic-version-increments-with-reliza-hub-2-strategies/

最后,对于您可以添加到版本的其他内容,GitLab 有一个预定义的环境变量列表,您可以将其全部或部分用作修饰符:https://docs.gitlab.com/ee/ci/variables/predefined_variables。 html


推荐阅读