独享物理节点
整台 Mac mini 只给你一人。CPU、统一内存与 SSD 不与其他租户共用,不切分、不超售。构建缓存留在自己的节点上,不必在每次任务开始时重新准备环境。
1 台主机 = 1 个租户
独享物理机,非虚拟机。5 个节点,按天/周/月/季计费,$21.1/天起
从一台开始,当天接入构建流程;实际可用状态与交付信息以控制台返回为准。
示例流程,非实时数据构建耗时随工程、依赖与缓存而变
iOS 打包机要的是稳定、可复现、随时有空。登录之后,先核对硬件、权限与工具链,再把第一条流水线接进来。
整台 Mac mini 只给你一人。CPU、统一内存与 SSD 不与其他租户共用,不切分、不超售。构建缓存留在自己的节点上,不必在每次任务开始时重新准备环境。
1 台主机 = 1 个租户
Xcode、模拟器、Metal 在 macOS 上原生运行。图形界面和命令行都可使用,开发工具不需要绕过虚拟化设备限制。可以自行查看硬件信息,核对 Mac mini 型号。
system_profiler SPHardwareDataType
先租一天核对依赖与签名流程;发版冲刺选按周,常驻 runner 选按月或季。周期价格分别列出,不把月价折算成日价充当入口价。
M4 Base:$21.1/天 · $57.1/周 · $105.7/月
全部为 Apple Silicon Mac mini。三档在 5 个节点均在售;内存与 SSD 随机型固定,额外工作空间通过独立附加项选择。
ID m4-16-256
独享物理节点 · Mac mini
ID m4-24-512
独享物理节点 · Mac mini
ID m4pro-64-2tb
独享物理节点 · Mac mini
可加购 +1TB / +2TB SSD 与 Thunderbolt 5 并联。网络参数、工具链版本与交付配置在下单及开通时核对。
查看完整铭牌与附加项统一美元结算。每张卡独立切换天、周、月、季;显示的是所选周期的整笔基础租金,不是折算日价。
M4 · 16GB · 256GB
$21.1/天
适合单 scheme 工程与短期验证。先记录全量构建耗时、缓存占用和峰值内存,再决定是否扩大常驻容量。
M4 · 24GB · 512GB
$41.4/天
适合持续积累依赖缓存、切换多个 scheme 的团队。需要同时出包时,用多台节点分担任务,不把串行队列误当成并行。
M4 Pro · 64GB · 2TB
$59.5/天
适合大型工程全量构建、模拟器测试与本地模型推理验证。64GB 统一内存与 2TB SSD,为多套依赖和构建产物留出空间。
入口价 $21.1/天;+1TB SSD 为 $3/天起。附加项单独计费,结账前核对机型、周期、节点与总额。
周期与附加项明细把 1~N 台云端 Mac 注册为 GitLab 或 GitHub Actions 的 self-hosted runner。先让一条流水线跑通,再把多个 scheme 分发到不同节点。
用同一个 commit 记录全量和增量耗时,检查证书、依赖下载与 DerivedData 占用。先以每个 runner 同时执行一个任务为起点。
按 macOS、Xcode 版本和项目用途命名标签。矩阵任务只有在多台匹配标签的 runner 可用时,才能跨主机同时执行。
按项目要求自选 Xcode 版本并长期保留。用 DEVELOPER_DIR 指定版本,独立设置归档与缓存路径,避免多个任务相互覆盖。
Xcode 版本号不是可复现构建的全部条件。依赖锁文件、签名材料、导出配置与环境变量也应进入团队的变更记录。
name: ios-nightly
on:
workflow_dispatch:
schedule:
- cron: "0 13 * * *"
jobs:
archive:
runs-on: [self-hosted, macOS, xcode-16.2]
strategy:
fail-fast: false
matrix:
scheme: [App-Prod, App-Staging, Widget]
env:
DEVELOPER_DIR: /Applications/Xcode-16.2.app/Contents/Developer
steps:
- uses: actions/checkout@v4
- name: Archive
run: |
xcodebuild archive \
-workspace App.xcworkspace \
-scheme "${{ matrix.scheme }}" \
-configuration Release \
-archivePath "build/${{ matrix.scheme }}.xcarchive"
- name: Export
run: |
xcodebuild -exportArchive \
-archivePath "build/${{ matrix.scheme }}.xcarchive" \
-exportPath "build/export/${{ matrix.scheme }}" \
-exportOptionsPlist ci/export.plist
将 workspace、scheme 与 Xcode 路径替换为自己的工程配置。GitLab 同样通过 runner 标签分配任务;证书与密钥通过受保护变量或专用密钥链管理,不写进仓库。
新加坡、日本(东京)、韩国(首尔)、香港、美国西部,三档机型全部覆盖。先看操作者与仓库所在位置,再核对实际访问链路。
东南亚
东亚
东北亚
华南与东南亚
北美西岸
延迟为节点参考区间,不是从你的网络发起的实测结果。SSH 上传下载、仓库拉取与 VNC 画面受各自链路影响;美国西部时区随夏令时变化。全部节点全年 365 天运行,实际可用状态以控制台实时返回为准。
脚本与 CI 走 SSH,调 Xcode 与模拟器走 VNC 屏幕共享。先在控制台查看主机地址与凭据,再按连接文档设置客户端。
用于安装依赖、注册 runner、查看构建日志。首次登录后修改密码并添加公钥,验证密钥可用后再调整认证设置。
ssh -i ~/.ssh/armrdp admin@<主机地址>用于检查 Xcode 设置、密钥链与模拟器。建议通过 SSH 隧道接入,将本地端口转发到主机的屏幕共享服务。
ssh -N -L 5901:localhost:5900 admin@<主机地址>图形任务与自动化任务共用同一套工程文件和工具链,不必在两套环境之间复制构建目录。
依赖安装、归档命令、日志与产物检查
工程设置、模拟器、签名与界面调试
vnc://localhost:5901用三个角色的第一人称需求,说明该如何安排节点。这些是使用情境示例,不是客户评价或性能统计。
“发版周我想让三条 scheme 各有自己的归档路径。任务能分到不同 runner,就不用一直盯着同一条队列。”
iOS 负责人 · 需求示例
“我希望 Xcode 版本和依赖锁文件一起固定。先在同一个 commit 上核对结果,再把这台 Mac 放进正式流水线。”
CI/CD 工程师 · 需求示例
“我先按天租一台 M4 Base,把证书与 GitLab runner 跑通。知道工程实际占用多少资源,再选长期周期。”
独立开发者 · 需求示例
不是。交付的是一台独享物理 Mac mini。租期内,硬件资源不与其他租户切分;可以通过系统信息核对芯片、内存与存储配置。
可以按工程需要安装并保留多个版本。构建脚本用 DEVELOPER_DIR 指向指定版本,或用 xcode-select 切换。安装前先确认系统兼容性与剩余磁盘空间。
先用一台主机跑单任务,记录峰值内存、归档耗时和磁盘读写。再决定是增加同机并发还是新增节点。scheme 数量本身不能直接推导出完成时间。
把证书放入专用密钥链,敏感变量放进 CI 的受保护配置。归档与导出产物同步到团队自己的存储,租期结束前完成备份并撤销不再使用的访问凭据。
用可执行 Swift 脚本验证 JSON Pointer 的转义、数组下标与失败语义,让字段缺失和合法 null 不再混为一谈。
CI/CD 实践用整数最大余数法解决百分比合计不等于百分之百的问题,并在云端 Mac 上验收确定性、零权重与溢出边界。
Security用可运行的 Swift 脚本验收无填充 Base64URL,检查非法字符、非规范尾位与超长输入,避免宽松解码掩盖接口错误。
新稿筹备中,先看博客列表。
先确认周期与配置,再核对订单总额。基础租金与附加项分别列出,实际可用支付网关以后端接口返回为准。
链上支付前核对网络与收款信息;银行卡支付按网关页面完成。支付状态未确认时,先查看订单,不重复创建同一笔付款。