写在前面
“嘿嘿嘿~亲爱的开发者,你也不希望你的代码由于审核导致没通过吧嘿嘿嘿~”
在Xcode写好的本地工程如何进行测试?
如何让别人体验的你写的美丽(丑陋)应用(bug)?
怎么通过apple严格的审核,成功外部测试?
今天我们来讲解一下如何使用Xcode Cloud来进行分发测试,以及一些Xcode Cloud的最佳实践
什么是Xcode Cloud
Xcode Cloud 本质上是一套运行在 Apple 云端基础设施上的 CI/CD 服务。它与 Xcode、TestFlight 和 App Store Connect 无缝集成,核心能力包括:
- 自动构建:监听 Git 仓库变更,自动触发构建任务;
- 自动测试:在云端真实的 Apple 硬件/模拟器上运行单元测试和 UI 测试;
- 自动分发:构建成功后,自动将产物推送至 TestFlight 或 App Store;
- 通知反馈:通过邮件或 Slack 即时通知构建结果
他不需要你自建 Mac 服务器,无需维护证书环境,Apple 全权托管
当然最大的好处还是这是苹果官方的上传渠道,对苹果的一些服务结合更加紧密无缝
前置准备
在你开始使用Xcode Cloud前,你应该满足以下条件:
- 已安装 Xcode 15.0 或更高版本;
- 拥有更高,更强,更棒的 Apple Developer Program 会员资格;
- 项目代码托管在受支持的 Git 仓库中(GitHub、GitLab、Bitbucket 或 Apple 自家的 Source Control);
- 项目已在 App Store Connect 中创建对应的 App 记录
这里给出官方要求文档,更详细的版本可以查阅官方文档来确认信息
创建工作流
如果你已经有一个完整的项目,并且符合上述条件,想使用Xcode Cloud,第一步应该是创建一个工作流
在Xcode菜单栏找到Integrate选项(根据版本不同,工作流的创建也可能不在这里)

在Integrate的选项下,找到Create Workflow(创建工作流)

点击创建工作流,你应该可以看到如下页面:

点击你想要加入的app,然后next即可

这里我们可以看到四个部分:
配置 General 信息
工作流编辑界面的第一部分是 General,这里可以:
- 为工作流起一个有意义的名字,例如
CI - PR Check或Release - TestFlight; - 填写描述,说明这个工作流的用途;
- 设置编辑权限,防止团队成员误操作。
命名规范很重要,尤其是当一个项目有多个工作流时,清晰的命名能大幅降低维护成本。
当然如果你是轻量级开发(没有代码洁癖)的情况下,保持默认的default也是可以的
选择构建环境(Environment)
Environment 部分允许你指定工作流使用的 Xcode 版本和 macOS 版本。Xcode Cloud 提供了多个版本选项,包括稳定版和 Beta 版,这对于需要同时验证多个系统版本兼容性的团队非常有价值。
这里还有一个重要选项:Clean 构建。勾选后,每次构建前都会清除派生数据(Derived Data),确保构建环境干净。对于提交到 TestFlight 外部测试的构建,建议始终开启 Clean,以避免缓存导致的隐性问题。
此外,你还可以在这里配置环境变量。如果你的构建脚本需要读取 API Key、Bundle ID 等敏感信息,可以将其设为 Secret 变量,Xcode Cloud 会对其加密存储,日志中不会明文显示
设置启动条件(Start Conditions)
Start Conditions 决定了工作流何时被触发。默认配置是"任意分支的任意文件变更即触发",这对大多数项目来说过于宽泛,建议根据实际需求调整。
常用的触发策略包括:
- 特定分支推送:只在
main、release/*等分支有提交时触发,适合发布流水线; - Pull Request 变更:每当有 PR 创建或更新时触发,适合代码审查前的自动验证;
- Git Tag 变更:在打 Tag 时触发,适合版本发布节点;
- 定时触发:设定固定时间(如每天凌晨)自动运行,适合夜间回归测试;
- 手动触发:完全由开发者手动启动,适合临时需求。
值得一提的是,大多数触发器都支持 Auto Cancel Builds 选项,即当同一触发条件短时间内多次触发时,自动取消旧的构建,只保留最新一次。这个功能默认开启,能有效节省计算时间配额
你知道吗:
Xcode Cloud实际上是按照使用时间来收费的
在你作为普通Apple Developer Program 会员的时候,你拥有每个月 25h的使用额度
如果你不编译不运行直接提交git,让Xcode cloud编译,你的额度会很快消失
这种情况下,你如果还想使用Xcode Cloud,你就必须再给苹果交钱咯!!!
添加工作流动作(Actions)
动作(Actions)是工作流的核心,定义了工作流具体要执行什么任务。默认情况下只有一个 Build 动作,你可以根据需要继续添加:
Build 是基础动作,用于编译指定的 App Scheme。如果 Scheme 配置有问题,Xcode Cloud 会在此阶段给出警告。
Test 动作会在云端运行你的单元测试和 UI 测试。你可以指定在哪些模拟器设备上运行测试,并设置 Requirement——即该测试是否必须通过,工作流才能继续执行。这是保障代码质量的关键一环。
Analyze 动作会运行 Clang 静态分析器,检查潜在的内存泄漏、逻辑错误等问题。
Archive 动作会对 App 进行归档并签名,是分发到 TestFlight 或 App Store 的前提
配置后续动作(Post-Actions)
后续动作在所有构建动作完成后执行,主要包括:
- 分发到 TestFlight:可以指定发布给内部测试人员或外部测试组;
- 提交到 App Store:直接推送至 App Store 审核队列;
- 通知(Notify):通过邮件或 Slack 发送构建结果通知,可以精细配置通知规则——仅在失败时通知、仅在从失败恢复时通知,或全部通知
查看构建结果
如果你成功构建,apple会给你发送邮件一封,展示你的构建情况
如果你失败了,apple同样也会邮件一封,告诉你构建出现的问题
此外,你也可以在App Store Connect 中,进入你的 App 详情页,点击顶部的 Xcode Cloud 标签,可以查看构建列表、手动触发工作流、管理 TestFlight 分发等
Xcode也提供了查看构建现状的功能,在导航栏的最后一部分

点击之后,就可以看到构建情况了
一些实用建议

在实际使用中,有几点经验值得分享。
首先,不要只建一个工作流,推荐至少区分"PR 验证流"和"发布流"——前者轻量快速,只做构建和测试;后者完整执行 Archive 和 TestFlight 分发
其次,合理利用分支策略,将发布流绑定到受保护的分支(如 main),避免意外触发
第三,善用环境变量管理多环境配置(开发、测试、生产),比在代码里硬编码要干净得多
参考文献:
- 开始使用 Xcode Cloud - Apple Developer
- Xcode Cloud 使用指南 - kilig.blog
- Xcode Cloud 持续集成实战指南 - OSChina
- XCode Cloud 的 CICD - Medium
- 深入了解适用于团队的 Xcode Cloud - WWDC22 - Apple Developer
- Writing Custom Build Scripts - Apple Developer Documentation
- Requirements for Using Xcode Cloud - Apple Developer Documentation