codemagic 调研

2024-07-26

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
codemagic

2.1.3 应用创建

codemagic

红框里报一个 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 团队

codemagic

3.2 企业

$12,000 / year
特点:

  • 优先支持
  • 支持 SSO 登录(OpenID, OAuth2)
  • 签署 SLAs, NDAs, DPAs
  • 提供个性化的硬件和软件的专用机器