1. 基础介绍
CodeMagic (https://codemagic.io/start/) 是一款专注于移动应用开发的 CI/CD(持续集成/持续交付)工具。CodeMagic 旨在简化移动应用的构建、测试和发布流程,特别是针对 iOS、Android 和 Flutter 应用程序
1.1 产品特点
深度集成:与 GitHub、GitLab、Bitbucket、自建 Git 服务等版本控制系统无缝集成,支持自动触发构建。
全平台构建:支持各平台构建,Android, iOS, web, or desktop
提升效率:自动执行最耗时的应用程序发布步骤,例如代码签名、构建和上传新应用程序版本以及设置更改日志
服务方式:云上服务,不支持私有部署,可自定义构建机器
安全可靠:提供审计日志,数据中心经过 ISO 27001 认证,个人信息和 GDPR/CCPA 合作维护
专注 Flutter:作为早期支持 Flutter 的 CI/CD 工具,CodeMagic 在 Flutter 社区中具有强大的影响力和广泛的使用。
1.2 平台对比
- Jenkins(https://jenkins.io/)
优势:功能强大,插件丰富,适用于各种项目类型。
劣势:配置复杂,学习曲线陡峭,特别是对于移动应用开发不够友好。 - GitHub Actions
优势:与 GitHub 仓库深度集成,便于使用,支持多种语言和平台。
劣势:对于复杂的移动应用工作流可能需要更多的手动配置。 - GitLab CI/CD
优势:集成到 GitLab 平台,提供全面的 DevOps 工具链支持。
劣势:移动应用的支持和文档可能不如 CodeMagic 详细。 - CircleCI(https://circleci.com/)
优势:支持快速并行构建,配置灵活。
劣势:高阶功能和性能优化需要付费订阅。 - Travis CI(https://travis-ci.com/)
优势:与 GitHub 集成良好,易于配置。
劣势:免费版本的并发构建限制较多,性能不如 CodeMagic 出色
2. 平台体验
2.1 Get started
https://codemagic.io/getting-started
以 android-native 体验为例:
https://docs.codemagic.io/yaml-quick-start/building-a-native-android-app/
2.1.1 Clone 样例 Andriod Native 仓库
https://github.com/codemagic-ci-cd/codemagic-sample-projects/tree/main/android/android-native-quick-start
clone 到自己的 Github 下
2.1.2 选择源码仓库
通过 OAuth2,授权 codemagic 获取 Git服务商权限(Gitlab、Gitlab 等),并选择对应仓库 andriod-native
2.1.3 应用创建
红框里报一个 GCLOUD_SERVICE_ACCOUNT_CREDENTIALS 变量缺失,它的作用是授权 codemagic 发布应用到 Google play,在下面会做配置的说明
2.1.4 签名
所有应用程序在向公众提供之前都必须进行数字签名,以确认其作者并保证代码自签名以来没有被更改或损坏。
- 生成 keystore
keytool -genkey -v -keystore codemagic.keystore -storetype JKS \
-keyalg RSA -keysize 2048 -validity 10000 -alias codemagic
- 上传 密钥到 codemagic
- 打开 Codemagic Team 设置,然后转到 codemagic.yaml 设置 > 代码签名身份。
- 打开 Android 密钥库选项卡。
- 通过单击“选择文件”或将其拖到指定的框架中来上传密钥库文件。
- 输入所示的密钥库密码、密钥别名和密钥密码值。
2.1.5 生成 Google play 调用密钥
https://play.google.com/console/signup
$25 注册费
目标:创建 ServiceAccount,获得 API 调用权限
具体可参考指引:https://docs.codemagic.io/yaml-publishing/google-play/
注意事项
需要在 codemagic 绑定信用卡,才可以创建 Team,才能上传 KeyStore
注册 Google Play,有注册费 $25
3. 计费方式
3.1 团队
3.2 企业
$12,000 / year
特点:
- 优先支持
- 支持 SSO 登录(OpenID, OAuth2)
- 签署 SLAs, NDAs, DPAs
- 提供个性化的硬件和软件的专用机器