iOS 构建农场 · 独享物理 Mac mini

把 iOS 打包交给
一台独享的
云端 Mac

不是虚拟机。每台 Apple Silicon Mac mini 物理节点只租给一个订单,CPU、统一内存与 SSD 全部独享。按天起租,常规订单下单后约 15 分钟交付。

登录后,沿用原来的打包命令

$ xcodebuild archive -workspace App.xcworkspace \
    -scheme App -configuration Release \
    -archivePath build/App.xcarchive

成功输出示例

** ARCHIVE SUCCEEDED **

在工程根目录执行;替换 workspace 与 scheme,先准备好项目依赖、签名证书及描述文件。输出仅示意成功结果,不代表执行记录。

先用一份代表性工程验证,再决定租期。交付信息与实际可用状态以控制台实时返回为准。

Release archive 增量构建 单元测试

同一工程,比较同一构建步骤

同一示例工程
Release archive 耗时

示例条件:SwiftUI 工程 · Xcode 16.4
单位:秒,越短越好

本地 Intel 笔记本参考环境 · 非在售机型
466.2s
Host M4 LiteM4 · 16GB · 256GB
189.4s
Host M4 PlusM4 · 24GB · 512GB
163.7s
Host M4 ProM4 Pro · 64GB · 2TB
97.5s
示例工程演示数据,不是性能实测或速度承诺。实际耗时取决于工程规模、依赖缓存、编译选项与签名步骤。
复现时,先统一条件。

固定提交、Xcode 版本与 Release 配置;分别记录冷缓存和热缓存结果,不把依赖下载时间混入 archive 对比。

按文档准备构建环境 →
节点目录5 个节点

新加坡 / 东京 / 首尔 / 香港 / 美国西部

常规交付约 15 分钟

下单后交付连接信息

可用率承诺99.9%

30 天约 43 分钟停机额度

入口价格$20.5/天

Host M4 Lite · 美元结算

保留熟悉的工具链

  • Xcode
  • fastlane
  • Flutter
  • React Native
  • Unity
  • GitHub Actions
  • GitLab CI
  • Jenkins

能打包什么

四类负载,同一台独享 Mac。
按天租,按任务用。

拿到 macOS 管理员权限后,继续使用自己的构建脚本。先确认工具链版本、签名材料和缓存目录,再把原来的任务接到云端 Mac;无需为了更换机器重新设计流水线。

CI 触发
出 IPA

自动化打包

xcodebuild · fastlane · gym

让 runner 接收提交,依次执行 archive、签名、导出与上传 TestFlight。把失败日志和构建产物留在 CI 中,不再依靠远程桌面逐次点按钮。

先用单个任务验证签名与导出,再设置并发上限。独享资源不等于无限并发;同时启动多少个 archive,应按工程的内存峰值决定。

bundle exec fastlane ios release
USB
外设

真机测试

devicectl · Xcode Devices

物理节点可用于 USB 外设与 Xcode 设备调试流程。设备接入涉及物理连接,不会把你身边的手机自动映射到远端机器;先通过工单确认接入安排。

接入后检查设备是否被识别,再核对系统版本、签名配置和测试目标。模拟器回归与真机验证是两条流程,不能互相替代。

xcrun devicectl list devices
xcodes
切换

多版本 Xcode 并存

xcodes · simctl · 版本回归

为正式构建与适配回归保留不同 Xcode 版本。用 xcodes 查看已安装版本,用构建任务的环境变量固定开发者目录,避免其他任务切换版本影响当前流水线。

先核对 Xcode 与 macOS 的兼容要求。模拟器运行时、DerivedData 和归档都占 SSD,安装新版本前先留出下载与解压空间。

xcodes installed
xcodebuild -version
64GB
MLX

AI 推理实验

MLX · 统一内存

在 Host M4 Pro 的 64GB 统一内存上评估量化模型。记录模型大小、上下文长度与内存峰值,再比较吞吐;不要只看模型文件能否放进磁盘。

按周安排一轮实验,保留脚本、环境依赖和结果后结束租用。与编译同机运行时,明确分配资源,避免推理任务挤占构建内存。

python -m pip show mlx mlx-lm

多少钱

三档机器,按天起租。

每天、每周、每月、每季均为对应租期的预付价格,不是互相折算的日均价。先按统一内存和 SSD 选档,再按任务持续时间选租期。

美元计价。每一行对应一档独享物理 Mac mini。
档位 / 规格每天每周每月每季选择机型
Host M4 LiteM4 · 16GB · 256GB SSD $20.5/天$55.4/周$102.5/月$278.8/季 选择 Lite →
Host M4 PlusM4 · 24GB · 512GB SSD $39/天$105.4/周$195.1/月$530.7/季 选择 Plus →
Host M4 ProM4 Pro · 64GB · 2TB SSD $61/天$164.6/周$304.8/月$829.1/季 选择 Pro →

一律以美元(USD)结算。仅支持 USDT-TRC20 与 Visa / Mastercard / Amex(经 Stripe);实际可用网关以后端接口返回为准。

查看附加 SSD 与 Thunderbolt 5 并联价格 →

单 App 与轻量流水线可从 Lite 验证;多 target、模拟器并行或 Flutter 项目先评估 Plus;大型工程并发 archive、Unity 导出及较大模型实验优先评估 Pro。附加 SSD 增加存储,不增加统一内存;升级前先分清瓶颈是磁盘、内存还是编译并发。

可用率承诺

承诺写成能算的数字。

节点全年 365 天正常运行。下面是服务承诺和申请规则,不是历史监控记录,也不是把每一次构建失败都计作节点不可用。

月度单机可用率承诺 99.9%

以服务可用性判断,不以应用编译是否成功判断。

停机额度
30 天约 43 分钟。这是可用率承诺的换算口径,不是预先安排的停机时段。
补偿方式
超出额度的部分,按影响时长折算服务天数延长;用户自身操作与不可抗力等边界按服务条款判定。
申请材料
故障结束后 7 天内,通过控制台工单提交订单号、影响时间段、连接现象与相关日志。

从团队任务出发

换机器,想解决的是这些事。

以下为角色化使用诉求示例,帮助对照自己的工作流,不作为客户评价或效果承诺。

“我想把夜间打包从办公室那台旧 Mac 搬走,早上先看构建产物,而不是先找人重启。”
iOS 负责人 · 夜间构建诉求
“我希望 Flutter 的 iOS 段也能进入流水线,依赖、签名和产物路径都可追踪。”
移动端架构师 · 流水线诉求
“我想按周租一台做模型实验,保存结果后结束租用,把实验成本单独记清。”
算法工程师 · 阶段实验诉求

还有疑问

下单前,先核对这四件事。

确认机器形态、交付方式、CI 接入和计费规则。具体订单的问题通过控制台工单处理,售前选型也可以发邮件至 support@osxhost.com。

是独享物理机,还是虚拟机?

是独享物理机。每台 Mac mini 只交付给一个订单,不向不同用户切分 CPU、统一内存与 SSD。macOS 图形界面和命令行完整可用;你仍需管理自己的项目依赖、签名材料和机内数据备份。

下单后多久能连接,先做什么?

常规订单下单后约 15 分钟交付,具体进度和连接信息查看控制台。拿到机器后先修改初始密码、配置 SSH 密钥,再检查磁盘与 Xcode 版本。SSH 适合自动化,macOS 屏幕共享适合首次图形化配置;步骤见上手文档。

能接 GitHub Actions、GitLab CI 或 Jenkins 吗?

可以作为自托管 runner 或 agent 使用。用你的 CI 系统注册这台机器,配置工作目录、任务标签与并发数。先跑一份最小构建确认依赖和签名,再迁移正式流水线;不要把私钥或证书密码直接写进仓库。

如何付款,租期结束前要做什么?

按天、周、月、季预付,以美元结算。仅支持 USDT-TRC20 与 Visa / Mastercard / Amex(经 Stripe),实际可用网关以后端接口返回为准。续费以控制台订单规则为准;结束租用前导出工程、证书与构建产物,不把实例当作唯一备份。退租后执行安全擦除。

今晚的构建,
换一台机器跑

$20.5/天 起 · 常规订单约 15 分钟交付 · 5 个节点可选

带上你的仓库、构建脚本和签名材料,从一次可复现的 archive 开始。