android - 使用 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 文件的名称中添加一些元数据以使其唯一并避免此类错误。您对如何做到这一点有任何想法吗?
解决方案
您可以做的第一件事是创建版本碰撞功能。您可以通过版本碰撞工具和 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
推荐阅读
- authorization - 在 Blazor 服务器端 CRUD 应用程序中授权登录用户查看他们的特定数据(不是所有用户创建的所有数据)
- java - springboot启动项目的pom.xml文件报错如何解决?
- sql - Postgres 中的递归 CTE
- php - PayPal IPN:读取多个 item_name 和数量并保存到数据库
- azure - Azure OAuth2 客户端凭据流 - 获取多个范围的令牌会引发错误
- node.js - WebSocket 连接到“wss://api.example.com/ws”失败:WebSocket 握手期间出错:意外响应代码:404
- gitkraken - GitKraken:无法打开公钥文件
- javascript - 如何在 javascript 中重定向自定义生成的 URL?
- android - Android 工作室 - MVP 模式
- ios - Siri,通过 Swift 改变语言识别,动态