提交时留下输入
记录分支、commit、scheme、Xcode 版本和构建参数。接手者从同一个提交继续,不依赖聊天记录猜测“刚才跑的是哪一版”。
交接字段:提交哈希 + 任务编号。
把 Xcode 构建机从办公室搬到机房。每次 push 触发任务,不再依赖某位同事留下电脑、接好电源。
在整机上注册自托管 macOS runner,按仓库约定触发分支、测试目标与产物路径。首次运行先确认命令行构建成功,再接入自动触发,避免把环境问题和 CI 配置问题混在一起排查。
单 App 的顺序构建可从 Push M4 S 开始:M4 / 16GB / 256GB SSD。保留依赖和 DerivedData 缓存,让后续任务复用同一套目录;不要让多个任务同时写入相同的构建输出。
全年在线解决的是机房托管与办公室断电的依赖,不代表失败任务会自动恢复。runner 自启、失败重试、磁盘清理和日志通知仍需在团队流水线中设置。
以下以项目目录中的 App.xcworkspace 和 App scheme 为例,执行前替换为实际名称。
xcodebuild -version
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-configuration Release \
-destination 'generic/platform=iOS' \
-derivedDataPath build/DerivedData \
-archivePath build/App.xcarchive \
archive
签名配置需提前准备。此命令生成 archive,不等同于完成导出或上传。
亚太白天提交,美国东部节点可承接北美白天的出包与发布。节点按主要操作者选择,构建任务按队列交接。
记录分支、commit、scheme、Xcode 版本和构建参数。接手者从同一个提交继续,不依赖聊天记录猜测“刚才跑的是哪一版”。
交接字段:提交哈希 + 任务编号。
独享不等于无限并发。为同一台 Mac 设置队列或互斥锁,签名与导出阶段顺序执行;不同项目分别使用工作目录与缓存键。
交接字段:队列状态 + 日志路径。
北美同事先核对测试结果、archive 和导出日志,再执行发布审批。若任务失败,保留现场与错误日志,不直接清空缓存重跑。
交接字段:制品位置 + 审批结果。
可选节点为新加坡、东京、首尔、香港、美国东部。VNC 交互优先考虑操作者所在位置,自动构建还要考虑仓库与依赖源的网络路径。时区是排班依据,不是连接延迟的保证;跨洲频繁操作时,可按两地团队分别配置整机,并统一 runner 标签。
用于 App Store 上架的 archive、签名与上传,在固定构建环境完成。减少环境迁移,不把签名资产复制到每位同事的电脑。
为发布分支指定 Xcode 路径,记录 SDK 与依赖锁文件。不要依赖交互桌面里上一次选择的版本;在构建日志中输出实际使用的工具链。
证书与描述文件集中保存在发布整机,按最小权限配置钥匙串。密码通过 CI 的受保护变量传入,不写入仓库、命令回显或公开日志。
先保留 xcarchive,再使用团队审核的 ExportOptions 配置导出。上传步骤单独设置授权与审批,便于区分编译失败、签名失败和上传失败。
将版本号、提交哈希、构建日志与产物关联。签名资产只在必要位置使用,同时在团队控制的安全位置保留加密备份,避免单点丢失。
Flutter 与 React Native 的 iOS 阶段仍需 macOS 工具链。把原生依赖、Pods 与 Xcode 缓存留在整机上,减少每次临时搭环境的重复工作。
M4 / 16GB / 256GB SSD
适合单 App 日常 CI、单条发布队列,以及先验证跨端项目能否稳定出包。构建、模拟器和其他进程共享这台整机的内存,建议先顺序执行,观察峰值再增加任务。
保留依赖锁文件,为不同分支设置缓存键;将历史产物转移到团队自己的制品存储,不让归档持续占满本地磁盘。
M4 / 24GB / 512GB SSD
适合多 target archive、Flutter / React Native 混合构建,以及需要同时保留更多依赖与工具链的项目。24GB 为并行任务提供更多内存余量,但并发数仍需按实际项目验证。
分别记录构建耗时、内存压力和磁盘占用。如果瓶颈是跨区下载或签名锁等待,增加内存不会直接解决,应先调整缓存与队列。
当多版本 Xcode、依赖缓存和 archive 持续增长时,可评估 +1TB SSD 或 +2TB SSD 附加项。存储扩展增加容量,不增加统一内存;先确认占用来源,再决定扩展。
同一台云端 Mac 也能承担本地模型推理、脚本验证与小规模测试。先确认模型能装入统一内存,再安排与发布任务错峰运行。
统一内存还要容纳 macOS、推理框架、上下文缓存和其他进程。模型文件大小不能直接当作运行内存;先用短输入验证,再逐步增加上下文与批量。
记录项:模型版本、量化方式、峰值内存。
固定框架版本、输入样本与生成参数,再比较耗时与输出。16GB 与 24GB 的选择以能否稳定运行目标任务为依据,不预设统一的模型规模或速度结论。
记录项:输入长度、运行参数、执行时间。
推理和 Xcode 编译会竞争计算与内存资源。发版时暂停实验队列,实验脚本使用独立目录与权限,不读取发布钥匙串;长任务及时保存结果。
记录项:任务优先级、停止条件、结果路径。
适合需要 macOS 与 Apple Silicon 环境的验证任务,不把小规模实验等同于大规模训练。可以先按天租用,跑通自己的工作负载后,再决定长期安排。
下面是两种角色的场景化表达,用于说明任务安排,不代表已验证的客户评价或连接性能实测。
“我们把 Fastlane 放在固定整机上。谁来值班都先看同一份构建回执,不再等某个人打开电脑。”
“我先从测试同事的网络验证远程桌面,再确定节点。自动测试走队列,需要人工复核时再接手桌面。”
单 App 顺序构建从 16GB 开始,多 target 与混合构建评估 24GB。选定主要工作节点,再把自己的第一条流水线跑通。
独享物理 Mac mini,按天 $19.2 起。实际可用状态以控制台实时返回为准。