9 月 9 日,苹果发布了 Xcode 27 RC,并开放了新系统应用的提交。同一份公告的角落里写着:从 2027 年 4 月起,App Store 将不再接受用旧 SDK 构建的应用。如果你的 CI 是桌子底下的两台 Mac mini,你很清楚接下来的例行仪式:给构建机升级 macOS,升级 Xcode,把一路上摔坏的东西全部重新构建一遍。而在 Xcode Cloud 里,新环境只是出现在下拉列表中:去年秋天,Xcode 26 在发布当天(9 月 15 日)就已经可以在那里使用了。
所以,正好趁这个机会把这朵云彻底拆开看看:它是什么、要多少钱、能力的边界在哪里。关于最后一点先剧透:边界恰好就是苹果生态系统的边界。至于在一个同时有后端和 Android 团队的公司里如何与这条边界共处,会有单独一篇文章。
它到底是什么#
Xcode Cloud 是内置于 Xcode 和 App Store Connect 的托管 CI/CD。你不用管理运行器:构建跑在苹果数据中心的 Apple silicon 上,macOS 和 Xcode 的版本从下拉列表里选。
配置的基本单位是 workflow,由四部分组成:
- 启动条件 —— 分支或标签变更、pull request、定时计划、手动触发;
- 环境 —— Xcode 和 macOS 版本(包括测试版);
- 操作 —— build、test、analyze、archive;测试可以在多个模拟器上并行执行;
- 后置操作 —— TestFlight 分发、提交 App Store、Slack 通知。
支持的 git 平台:GitHub、GitHub Enterprise、GitLab(包括自托管)、Bitbucket。第一个 workflow 在 Xcode 里一个对话框就能建好:Integrate → Create Workflow,大约十五分钟后你就有了第一个云端构建 —— 不写一行 YAML,也不用商量构建机放在谁的桌上。
从去年起,入门门槛进一步降低:不需要付费的 Developer Program 会员也能构建和测试。TestFlight 和上架仍然需要账号。
签名不再是一项工作#
iOS CI 历史上的痛点从来不是编译,而是签名:证书、provisioning profile、它们悄无声息的过期、为 fastlane match 准备的加密仓库,等等。有一整类工具的存在,只是因为 CI 里的签名本身就是一门专业。
在 Xcode Cloud 里这门专业不存在。Cloud signing 自动创建和轮换证书,profile 自动刷新,那句经典的"发布证书在谁的 Mac 上?"从流程里彻底消失。这大概是整个服务最有力的论据 —— 比价格更有力。
同一个盒子里还有些不错的附赠:构建状态直接显示在 GitHub 的 pull request 里(还可以设为合并的必要条件)、测试和覆盖率报告直接在 Xcode 里看、TestFlight 分发只是 workflow 设置里的一个勾选框。
经济账#
自 2024 年 1 月起,Developer Program 会员(每年 $99)包含每月 25 个计算小时。超出部分是付费档位:
| 档位 | 价格 | 折合每小时 |
|---|---|---|
| 25 小时 | 会员附带 | — |
| 100 小时 | $50/月 | $0.50 |
| 250 小时 | $100/月 | $0.40 |
| 1000 小时 | $400/月 | $0.40 |
对比一下:GitHub Actions 的 macOS 运行器每分钟 $0.08 —— 每小时 $4.80,贵了将近一个数量级。这个对比并不完全公平:硬件不同,而且 Xcode Cloud 的并行测试 destination 会同时消耗小时数。即便打了这些折扣,苹果的云依然是市面上最便宜的 macOS 构建之一。
未用完的小时数月底清零。用真实项目粗算一下:带测试的构建大约 12–15 分钟,免费的 25 小时约等于一百次构建。独立开发者绰绰有余;五人团队每次 push 都跑 CI 的话,一周就烧完了。
痛点在哪里#
下面是诚实的"反方"清单,没有它整个图景就没有意义。
只有苹果生态。 iOS、iPadOS、macOS、watchOS、tvOS、visionOS —— 就这些。没有后端,没有 Android,没有 Docker,没有 Linux。Xcode Cloud 成不了你公司的 CI —— 只能是你 iOS 团队的 CI。
自定义就是三个脚本。 超出标准操作的一切都住在 ci_scripts/ 里:ci_post_clone.sh、ci_pre_xcodebuild.sh、ci_post_xcodebuild.sh。没有 GitHub Actions 那样的任意步骤图。SPM 依赖开箱即用;CocoaPods 和自有工具要靠 post-clone 加 Homebrew 自己动手。
配置不在 git 里。 Workflow 在 App Store Connect 里配置,而不是代码旁边的文件。API 可以读取和创建它们,但"配置即代码"得你自己搭 —— 产品本身不带。
环境版本由苹果说了算。 去年 12 月 Xcode Cloud 有个已知 bug:development 分发的 export archive 在 Xcode 26.2 上失败,官方的规避方案是"用 26.1 构建"。修复的是苹果 —— 但时间表也由苹果定,不由你。再加上排队问题:苹果大型发布前,构建等待时间明显变长。
密钥与政策。 密钥就是 App Store Connect 界面里的环境变量。没有 Vault 集成,没有也永远不会有自托管运行器:如果安全团队的要求是"构建不得离开边界",谈话在这一条就结束了。
谁该用,谁不该用#
独立开发者和五人以内、产品纯苹果系的 iOS 团队 —— 可以,几乎不用犹豫。免费小时够用,签名作为一类工作直接消失,TestFlight 两次点击搞定,而维护两台日渐老去的 Mac mini 的真实成本,通常要到 App Store 四月的最后期限才被正视。
对可复现性有硬性要求、需要自定义步骤图、密钥放 Vault、政策是"一切留在边界内"的团队 —— 不行。或者,更有意思的选择:混合方案。公司的公共流水线留在原地,Xcode Cloud 成为其中承担单一角色的执行者 —— 构建和分发 iOS 应用。
这个混合方案在技术上怎么接线 —— 通过 App Store Connect API 触发构建、webhook 回流水线、工件和 monorepo —— 下一篇文章讲。



