极狐 GitLab 和 Xcode Cloud 集成,实现 iOS 的自动打包
一直以来,iOS/macOS 开发者面临一个难题:大部分云厂商只提供 Linux/Windows 服务器,而不提供 Mac,如果想实现「持续集成自动打包」就需要绑定自己的 Mac 作为构建机。如果用个人 Mac,一旦关机,小组同事就无法构建;如果再买一台公共 Mac,又造成浪费。
2022 年 6 月,Apple 在 WWDC(全球开发者大会)上宣布 Xcode Cloud 服务正式推出,提供 CI/CD 功能。
作为持续集成,首先要对接代码库,Xcode Cloud 支持 3 家全球知名的代码库:
Bitbucket、GitHub、GitLab
本文以 flutter/iOS 项目为例,讲解「极狐 GitLab 代码库对接 Xcode Cloud」,实现自动打包。
- Xcode——》Product——》Xcode Cloud——》Create Workflow,一直点下一步即可
2. 点击「Grant Access」,即授权代码库
3. 选择「GitLab Self-Managed」,注意:不管是极狐 GitLab SaaS 还是私有化都选择这个。
- 选择「GitLab Self-Managed」,注意:不管是极狐 GitLab SaaS 还是私有化都选择这个。
https://appstoreconnect.apple.com/ci/api/scms/auth/gitlab-hosted/callback
范围选择:api、read_repository 和 read_user。
创建成功,获得「应用程序 ID」和「密码」,填写到 Apple 网站上,点击下一步进行授权。
- 授权成功,回到 Xcode,点击下一步进行首次构建。
-
提交代码到极狐 GitLab,会立即触发 Xcode Cloud 打包。
-
高级设置:自动发布到 Testflight 测试通道。
Xcode——》Product——》Xcode Cloud——》Manage Workflows——》双击或右键 Edit——》
Archive iOS——》Deployment Preparation 选择 Testflight (Internal Testing Only)
Post-Actions——》Add——》Testflight Internal Testing——》Groups——》Add group(需要先在 Testflight 网页上创建测试组)
注意:Xcode Cloud 网页上的部署准备(Deployment Preparation)没有 Testflight 选项,估计是 Apple 的 bug。
- 高级设置:在极狐 GitLab CI 里扫描代码规范、打包 Android,在 Xcode Cloud 里打包 iOS。
如果配置极狐 GitLab CI(即 .gitlab-ci.yml),会看到除了自己编写的步骤,无需配置就会多出来一步 external,即为 Xcode Cloud。