React Native 夜间打包
白天留本地机写代码,夜间把 iOS 构建交给云端。先跑一个固定分支,确认 Node、CocoaPods、Xcode 与 Fastlane 的版本能复现现有结果。
从单任务队列开始,保留依赖锁文件;把依赖缓存与最终产物分开存放。不要在每次构建后清空所有缓存,也不要把签名材料写进仓库。
验收看三项:依赖能安装、构建退出码正常、产物能被后续测试流程使用。先测冷缓存,再测重复构建,分别记录耗时。
夜间打包、自动回归、模型实验。你继续用熟悉的工具,把执行任务交给一台独享物理 Mac mini,非虚拟机。
先选一个能验证的任务,按天跑通;再根据内存占用、磁盘增长和任务频率,决定机型与租期。
两档机型 · 五个节点 · $20.2/天起。实际可用状态以控制台实时返回为准。
推荐配置是试跑起点,不是性能保证。用你自己的项目测一次,比只看芯片名称更有用。
白天留本地机写代码,夜间把 iOS 构建交给云端。先跑一个固定分支,确认 Node、CocoaPods、Xcode 与 Fastlane 的版本能复现现有结果。
从单任务队列开始,保留依赖锁文件;把依赖缓存与最终产物分开存放。不要在每次构建后清空所有缓存,也不要把签名材料写进仓库。
验收看三项:依赖能安装、构建退出码正常、产物能被后续测试流程使用。先测冷缓存,再测重复构建,分别记录耗时。
把 iOS 与 macOS 目标的构建集中到同一套 macOS 环境。固定 Flutter SDK、Dart 与 Xcode 版本,让同一提交在本地和云端使用一致的构建参数。
先迁移一个目标平台,再增加其他目标。模拟器、DerivedData 与依赖缓存会持续占用磁盘;保留必需的运行时,给缓存设置清理规则。
验收看三项:环境诊断通过、目标产物生成、日志与产物能回传。需要同时跑多条构建时,再评估 Flow M4 Pro,而不是直接拉满并发。
用 M4 Pro 的 64GB 统一内存验证量化模型。先选定模型版本、量化方式、上下文长度与测试输入;模型能否装入内存,要把运行时与缓存占用一起计算。
每个实验使用独立 Python 环境。模型权重、下载缓存与实验结果分目录存放;模型文件较多时,可评估 +2TB SSD 加购项,避免反复下载挤占系统盘。
验收看三项:模型能加载、峰值内存可接受、固定输入的吞吐可复现。先按天完成验证,再考虑季付;加盘不会增加统一内存。
把固定测试集放到独立节点,避免回归任务与日常开发争用本地资源。固定 Xcode、模拟器运行时和测试设备配置,先串行验证,再逐步增加并发。
每次保留测试结果包、失败截图与对应提交号。测试需要图形会话时,先验证会话条件;仅有 SSH 连通,不代表所有界面测试都能直接运行。
验收看三项:重复执行结果稳定、失败记录完整、并发时内存有余量。云端模拟器测试不等于已包含实体测试设备。
数据、工具链、CI 分开验收。哪一步出了问题,就回到那一步,不必同时改动所有变量。
本地 Mac 端
列出项目、依赖锁文件、必要缓存与产物目录。排除临时文件和无用构建产物,先做一份独立备份。
云端 Mac 端
建立项目目录,通过 rsync 增量传输。项目与缓存较大时,按容量评估 +1TB SSD 或 +2TB SSD,加购盘的实际挂载位置以机器内显示为准。
设置 MAC_HOST 为连接地址后运行
rsync -av --progress ./ "$MAC_HOST:~/workspace/"
交接完成:文件可读写,目录权限正确,关键文件校验一致。rsync 同步不替代独立备份,首次迁移不要开启删除目标文件的选项。
本地 Mac 端
记录 Xcode 与命令行工具版本,导出 Homebrew 依赖清单。整理证书钥匙串中任务必需的材料,确认访问权限与使用范围。
云端 Mac 端
安装并选择对应工具版本,按清单恢复依赖。签名材料通过受控方式导入钥匙串,先验证命令行任务能在预期会话中访问,不把解锁密码写入日志。
核对当前开发工具与路径
xcodebuild -version
xcode-select -p
交接完成:同一提交、同一参数可完成构建。先跑一条完整命令,再接自动化;不要把未验证的环境直接设为默认执行端。
本地 Mac 端
保存现有流水线配置,列出构建、测试、归档和上传步骤。把硬编码的本地目录改成工作目录变量,明确回退时要恢复的执行标签。
云端 Mac 端
注册 self-hosted runner,配置独立标签与最小权限。先让测试分支命中新节点,确认产物上传与日志回传,再切换正式流水线标签。
GitHub Actions 的执行端标签示例
runs-on: [self-hosted, macOS, ARM64, cloud-build]
交接完成:任务确实落到新节点,结果可追溯,凭据没有进入输出。不要让不受信任的外部提交直接访问带有签名材料的 runner。
轻量打包从 Flow M4 开始;并行构建与 MLX 优先评估 Flow M4 Pro。多机协作是另一层配置,不是把多台机器变成一台大内存机器。
| 任务与瓶颈 | 推荐起点 | 周期建议 | 试跑时重点检查 |
|---|---|---|---|
| 轻量打包、单任务队列 | Flow M4 M4 / 16GB / 256GB |
按周覆盖发版;稳定使用再评估月付。 | 冷缓存与热缓存耗时、峰值内存、构建目录增长。 |
| 并行构建、较多模拟器任务 | Flow M4 Pro M4 Pro / 64GB / 2TB |
先按天验证并发,再按周运行完整测试集。 | 逐级增加任务数,观察内存压力、测试稳定性与磁盘写入。 |
| MLX 量化模型推理 | Flow M4 Pro M4 Pro / 64GB / 2TB |
按天试验,确认模型适配后再选月付或季付。 | 权重、上下文与运行缓存的总占用,以及固定输入下的吞吐。 |
| 项目、模型或缓存占盘较多 | 按机型内存需求选择;另评估 +1TB SSD 或 +2TB SSD。 | 在所选计费周期中核对加购报价。 | 目录放置、挂载位置、剩余空间和独立备份是否完整。 |
| 多台节点分工协作 | 按单机任务选型,再评估 Thunderbolt 5 并联,按每台计费。 | 先验证软件与连接需求,再决定长期租期。 | 任务拆分与数据传输方式。并联不等于自动合并统一内存,也不代表软件会自动分布式运行。 |
可选新加坡、日本(东京)、韩国(首尔)、香港、美国东部,共五个节点。两档机型均在售;交互式工作优先考虑接近操作者的位置,自动构建还要考虑代码与产物传输路径。
固定提交号与工具版本,分别记录准备、构建、测试和上传耗时。没有同一输入与同一环境的对照,单次完成得快,不能直接说明长期任务已经适配。
把目标说成一句能验收的话:原流程能跑通,或实验能确认适配。做到这一步,再决定下一步投入。
“把 CI 从本地机搬到首尔节点,流水线标签改一行就跑通了。”
React Native 团队工程师
“先按天租一台试 MLX,确认够用再换季付。”
AI 产品原型开发者
带上一个项目、一套输入和一条验收标准。先让任务跑通,再决定把多少工作交给云端。
按天、周、月或季租用。仅支持 USDT-TRC20 与经 Stripe 处理的 Visa / Mastercard / Amex,以美元结算;实际可用网关以控制台返回为准。