Xcode Cloud

2,111 阅读4分钟

介绍

Xcode Cloud是苹果在WWDC2021年提出的一个CI/CD系统。它是一款结合Xcode,TestFlight和App Connect的CI/CD工具。

在Xcode Cloud中能够实时、自动、频繁的编译得你的代码。同时分发给测试人员,通过TestFlight安装,提交Bug。在测试通过后快速的将应用更新到App Connect中。

能够支持多版本的Xcode的编译。同时在多种设备上测试应用版本,以快速检查项目的情况。或者针对极少数情况以较低的频率测试各种设备配置。

注册申请

Xcode Cloud 还是个Bate版本,虽然已经内嵌在Xcode13中,但是还是需要进行申请才行点击跳转。会通过邮件告知。

构建工程

构建工程也是比较简单的。

  1. 首先项目工程必须需要Git进行管理,不然无法使用Xcode Cloud。

  1. 源代码管理库必须能在外网访问。
  2. Xcode->Product->Xcode Cloud->Create WorkFlow 选中目标工程

  1. 编辑工程信息
  1. 将 Xcode Cloud 与“GitHub”连接(GitLab同理)

点击Grant Access会调转到浏览器界面,按照提示操作即可。

  1. 成功后返回Xcode即可Build

建议工程名不要随便取,工程名相同是传不上去的。

控制面板

主界面

左侧导航栏是每次build记录,点击右边的列表能查看每一次build的详细信息

2.点击logs能够查看每次build日志,跟本地build日志一样

管理面板

  1. General(项目介绍)

上面图中已经介绍,没有其他的信息

  1. Environment(环境变量配置)

    1. 可以配置Xcode的版本和编译的MacOS版本
    2. clean 每次编译前是否要清理之前的缓存,跟本地clean效果一样
    1. 添加环境配置
  1. Start Conditions(开始编译的触发条件)

Xcode提供了4种触发条件,每一种里面都有详细的配置。

    1. 分支代码。可以指定分支和指定文件变化时,也可以是所有的分支。
    2. 拉取代码。可以指定分支和指定文件变化时,也可以是所有的分支。
    1. tag变化。可以指定tag和指定文件变化时,也可以是所有的tag。
    2. 指定时间。可以选择每周每天每小时,或者定时触发。

只演示一个其他类似。

  1. Actions(操作)
    1. Build
    2. Test
    1. Analyze
    2. Archive

可以多个Actions同时进行୧(๑•̀◡•́๑)૭。

  1. Post-Actions(添加事件推送)

1.内部TestFlight(测试人员就可以用)

2.外部TestFlight

3.邮件通知

三方依赖(注意不要去获取root权限)

很多项目都会依赖cocoapods等三方库,Xcode Cloud的编译环境中并不包含cocoapods。苹果也提供了解决方案。developer.apple.com/documentati…

Xcode Cloud编译环境包含Homebrew,所以需要使用homebrew安装cocoapods。

  1. 创建ci_scripts文件夹件
  2. 创建ci_post_clone.sh文件
  1. 输入以下代码
#!/bin/sh

# Install CocoaPods using Homebrew.
 brew install cocoapods

 # Install dependencies you manage with CocoaPods.
 pod install
  1. 在mac终端执行 chmod +x ci_post_clone.sh
  2. 提交到git即可

\

但是存在的问题。每次都会去安装cocoapod。导致编译时长较长。

优点

    1. 能够实时编译
    2. 同时支持多套编译操作
    1. 支持不同平台和系统的打包
    2. 交付测试更加方便
    1. 本地资源占用少
    2. 资源保存在远端,随时能够获取之前编译的IPA包
    1. 编译时丝毫不影响本地开发

缺点

    1. 单次编译时间长
    2. 环境依赖配置麻烦
    1. 排除问题不方便,本地编译正常,Xcode Cloud编译失败。
    2. 缺少真机调试

安全性

在云端构建,那会不会造成代码泄漏等问题。这点可以完全放心,毕竟苹果在保护隐私方面也是下了大力气。而源代码是项目的核心,确保代码的安全性也是苹果重点考虑的问题,为此他们做了以下工作:

  1. 构建环境是临时的;
  2. 工作流是完全隔离的,构建环境在构建前会被清除并在构建时重新创建;
  1. 不会存储源代码,Xcode Cloud 仅在临时环境中获取代码;
  2. 构建数据以过加密并存储在专用的 CloudKit 数据库中
  1. 开发者可以随时删除数据

可实施性

对于源码库外网能进行外网访问的工程,可以使用Xcode Cloud进行随时编译。比如一些比较大的工程,完全可以放在Xcode Cloud上进行编译,节省开发时间。

在某些场景下获取旧的IPA,都能直接进行下载。

随着Xcode Cloud的继续完善。相信以后编译会越来灵活,快捷。大大提高开发效率

欢迎大家指出文章中如有错误或者不足的地方。

参考:zhuanlan.zhihu.com/p/380029706

developer.apple.com/documentati…