充分利用 Xcode Cloud
Get the most out of Xcode Cloud
2022年6月6日
一句话判断
Xcode Cloud 新增的 Usage Dashboard 和精细化工作流配置,让 CI/CD 的成本控制终于变得可视化、可操作了。
这场 Session 讲了什么
Xcode Cloud 是 Apple 内置于 Xcode 的持续集成和交付服务。今年的重点在于帮你”用好”而不是”用上”。Session 用 Food Truck 项目贯穿全程,演示了如何优化现有工作流。
构建耗时与使用量的区别:一次构建的”时长”(duration)是墙上时钟时间,而”使用量”(usage)是所有 action 的计算时间之和。因为 Analyze、Archive、Build、Test 等 action 是并行执行的,所以 14 分钟的构建可能消耗 32 分钟的使用量。理解这个区别是优化成本的第一步。
Usage Dashboard:新增的使用量看板,展示当前计费周期的总用量、剩余额度、30 天趋势图。可以按产品和按工作流分别查看用量分布,快速定位哪个工作流最”烧钱”。
Start Condition 精细化:用 Branch Changes 替代 Scheduled 构建,避免重复构建同一个 commit。支持按分支前缀过滤(如只构建 release/* 分支)。可以排除特定文件/文件夹的变更(如文档目录),避免无意义的构建触发。
新增 watchOS 工作流:演示了如何为一个已有 iOS 项目添加 watchOS companion app,并配置独立的 Xcode Cloud 工作流。
值得深挖的点
构建去重是最直接的成本优化手段。Session 中 Release workflow 原本配置了定时构建(scheduled build),但有时定时触发时没有新的 commit,白白消耗计算资源。切换到 Branch Changes 触发后,只有当代码真正变更时才启动构建。这个改动看起来简单,但对于按使用量计费的 CI 服务来说效果显著。
文件级别的触发过滤进一步减少了无效构建。文档目录(docs/)的变更不影响编译产物,排除它之后避免了文档更新触发的无意义构建。这在大团队中特别有用——文档更新的频率可能远高于代码更新。
并行 action 的用量计算需要团队管理者理解。一次构建消耗的使用量 = 所有 action 用时之和。即使构建 14 分钟就完成了,如果你同时跑了 Analyze + Archive + Test 三个 action(分别用时 10、12、10 分钟),使用量是 32 分钟。优化方向是减少 action 数量或缩短单个 action 耗时。
代码片段
配置 Branch Changes 启动条件:
// 在 Xcode Workflow Editor 中:
// 1. 删除 Scheduled Start Condition
// 2. 添加 Branch Changes Start Condition
// 3. 将 Source Branch 从 "Any Branch" 改为 "Custom Branches"
// 4. 添加前缀匹配:release/*
// 排除文档目录的变更
// Files and Folders > Custom Conditions
// Don't start a build > 添加条件 > 选择 docs/ 文件夹
Workflow 配置结构示意:
Release Workflow
├── Start Conditions
│ └── Branch Changes: release/*
│ └── 排除: docs/ 文件夹
├── Actions
│ ├── Build (iOS)
│ ├── Test (iOS)
│ └── Archive (iOS)
└── Post-Actions
└── TestFlight Distribution
添加 watchOS 构建目标:
// 在 Xcode 项目中添加 watchOS Target 后
// Xcode Cloud 会自动检测新的 scheme
// 为 watchOS scheme 创建独立的 Workflow:
// - Start Condition: main 分支
// - Actions: Build + Test (watchOS)
// - 依赖 iOS workflow 完成后再触发
最佳实践
- 用 Branch Changes 替代 Scheduled 构建:只在代码真正变更时构建,避免空跑
- 排除无关文件:文档、配置文件、资源目录的变更通常不需要触发构建
- 定期审查 Usage Dashboard:按工作流查看用量分布,找到成本最高的工作流优先优化
- 合理设置并行 action:不是每个 workflow 都需要 Analyze + Test + Archive,按需裁剪
- Release 分支用前缀匹配:
release/*覆盖所有发布分支,不需要逐个添加
还有什么值得关注
- Xcode Cloud 的计费按月度周期计算,免费额度有 25 小时/月,超出后按用量收费
- Usage Dashboard 的趋势图可以切换不同时间范围,方便做月度/季度成本分析
- watchOS 项目的 CI 配置与 iOS 项目独立,互不影响构建时间
- Session 建议搭配去年的 “Meet Xcode Cloud” 和 “Explore Xcode Cloud Workflows” 一起看