介绍
Xcode Cloud是苹果在WWDC2021年提出的一个CI/CD系统。它是一款结合Xcode,TestFlight和App Connect的CI/CD工具。
在Xcode Cloud中能够实时、自动、频繁的编译得你的代码。同时分发给测试人员,通过TestFlight安装,提交Bug。在测试通过后快速的将应用更新到App Connect中。
能够支持多版本的Xcode的编译。同时在多种设备上测试应用版本,以快速检查项目的情况。或者针对极少数情况以较低的频率测试各种设备配置。
注册申请
Xcode Cloud 还是个Bate版本,虽然已经内嵌在Xcode13中,但是还是需要进行申请才行点击跳转。会通过邮件告知。
构建工程
构建工程也是比较简单的。
- 首先项目工程必须需要Git进行管理,不然无法使用Xcode Cloud。
- 源代码管理库必须能在外网访问。
- Xcode->Product->Xcode Cloud->Create WorkFlow 选中目标工程
- 编辑工程信息
- 将 Xcode Cloud 与“GitHub”连接(GitLab同理)
点击Grant Access会调转到浏览器界面,按照提示操作即可。
- 成功后返回Xcode即可Build
建议工程名不要随便取,工程名相同是传不上去的。
控制面板
主界面
左侧导航栏是每次build记录,点击右边的列表能查看每一次build的详细信息
2.点击logs能够查看每次build日志,跟本地build日志一样
管理面板
- General(项目介绍)
上面图中已经介绍,没有其他的信息
- Environment(环境变量配置)
-
- 可以配置Xcode的版本和编译的MacOS版本
- clean 每次编译前是否要清理之前的缓存,跟本地clean效果一样
-
- 添加环境配置
- Start Conditions(开始编译的触发条件)
Xcode提供了4种触发条件,每一种里面都有详细的配置。
-
- 分支代码。可以指定分支和指定文件变化时,也可以是所有的分支。
- 拉取代码。可以指定分支和指定文件变化时,也可以是所有的分支。
-
- tag变化。可以指定tag和指定文件变化时,也可以是所有的tag。
- 指定时间。可以选择每周每天每小时,或者定时触发。
只演示一个其他类似。
- Actions(操作)
-
- Build
- Test
-
- Analyze
- Archive
可以多个Actions同时进行୧(๑•̀◡•́๑)૭。
- Post-Actions(添加事件推送)
1.内部TestFlight(测试人员就可以用)
2.外部TestFlight
3.邮件通知
三方依赖(注意不要去获取root权限)
很多项目都会依赖cocoapods等三方库,Xcode Cloud的编译环境中并不包含cocoapods。苹果也提供了解决方案。developer.apple.com/documentati…
Xcode Cloud编译环境包含Homebrew,所以需要使用homebrew安装cocoapods。
- 创建ci_scripts文件夹件
- 创建ci_post_clone.sh文件
- 输入以下代码
#!/bin/sh
# Install CocoaPods using Homebrew.
brew install cocoapods
# Install dependencies you manage with CocoaPods.
pod install
- 在mac终端执行 chmod +x ci_post_clone.sh
- 提交到git即可
\
但是存在的问题。每次都会去安装cocoapod。导致编译时长较长。
优点
-
- 能够实时编译
- 同时支持多套编译操作
-
- 支持不同平台和系统的打包
- 交付测试更加方便
-
- 本地资源占用少
- 资源保存在远端,随时能够获取之前编译的IPA包
-
- 编译时丝毫不影响本地开发
缺点
-
- 单次编译时间长
- 环境依赖配置麻烦
-
- 排除问题不方便,本地编译正常,Xcode Cloud编译失败。
- 缺少真机调试
安全性
在云端构建,那会不会造成代码泄漏等问题。这点可以完全放心,毕竟苹果在保护隐私方面也是下了大力气。而源代码是项目的核心,确保代码的安全性也是苹果重点考虑的问题,为此他们做了以下工作:
- 构建环境是临时的;
- 工作流是完全隔离的,构建环境在构建前会被清除并在构建时重新创建;
- 不会存储源代码,Xcode Cloud 仅在临时环境中获取代码;
- 构建数据以过加密并存储在专用的 CloudKit 数据库中
- 开发者可以随时删除数据
可实施性
对于源码库外网能进行外网访问的工程,可以使用Xcode Cloud进行随时编译。比如一些比较大的工程,完全可以放在Xcode Cloud上进行编译,节省开发时间。
在某些场景下获取旧的IPA,都能直接进行下载。
随着Xcode Cloud的继续完善。相信以后编译会越来灵活,快捷。大大提高开发效率
欢迎大家指出文章中如有错误或者不足的地方。