首次使用指南

从下单
到第一次
archive

租一台独享 Apple Silicon 物理节点,把连接、工具链和构建逐项验收。先跑通一个工程,再接入团队 CI。

两档机型,5 个节点,$21.2/天起。整台独享,非虚拟机;交付状态与实际可用性以控制台实时返回为准。

第一步 / 选定计算资源

先看工作负载,再选节点

纯编译和首次验证从 Arm Line M4 开始。模型推理、较大的统一内存需求选 Arm Grid M4 Pro。不要仅按工程目录大小判断内存需求,也要考虑并发任务和工具链占用。

Arm Line M4

M4 / 16GB / 256GB

适合首次 Xcode 构建、单条 CI 构建线和临时 iOS 出包。先用真实工程验证依赖安装、缓存大小与构建流程。

$21.2/天

租用 Arm Line M4

Arm Grid M4 Pro

M4 Pro / 64GB / 2TB

适合模型推理、更大的构建缓存和内存占用较高的工作流。能否承载具体模型,仍要结合量化方式、上下文长度与运行参数验证。

$59.8/天

租用 Arm Grid M4 Pro

两档均在 5 个节点在售

新加坡、日本(东京)、韩国(首尔)、香港、美国东部。交互式桌面优先考虑团队所在地到节点的网络路径;无人值守构建还要考虑代码拉取、依赖下载与产物回传。地理距离只是起点,不等于实测延迟。

首次租用可先选天租,用同一份工程跑完整流程,再决定是否使用更长周期。四种周期及附加项的完整价格见方案页。

第二步 / 付款与交付

付款后,先核对订单状态

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

  1. 01

    核对订单

    确认机型、周期、节点和加购项。USDT 转账必须选择 TRC20 网络,并逐项核对支付页面给出的收款信息与金额,不复用旧订单的付款信息。

  2. 02

    等待确认

    链上付款需要确认,到账速度随网络状态变化;银行卡付款以支付结果及订单状态为准。不要因为页面暂未更新而重复付款,也不要把支付成功等同于节点已交付。

  3. 03

    读取连接信息

    在控制台查看交付状态。节点可用后,核对 IP、登录用户名、初始密码和连接端口。若付款凭证与订单状态不一致,提交工单并附订单号及交易哈希或付款凭证。

第三步 / 首次连接

先验证 SSH,再打开图形桌面

以下命令在你的本地终端执行。按提示填入控制台实际显示的地址、端口与用户名,不把文档示例当作连接凭据。

建立 SSH 会话

read -r -p "Node IP: " NODE_IP
read -r -p "SSH port: " SSH_PORT
read -r -p "Login user: " NODE_USER
ssh -p "$SSH_PORT" "$NODE_USER@$NODE_IP"

首次连接会显示主机指纹。先通过可信渠道核对再接受;如果已保存的指纹发生变化,应先确认是否重装或更换节点,不直接跳过校验。

在远端修改当前用户密码

whoami
hostname
passwd

passwd 在云端 Mac 的 SSH 会话中执行。按提示输入旧密码与新密码,输入过程不显示字符。密码不要与其他服务复用,也不要写入构建日志。

VNC 客户端怎么填

字段填写内容核对方式
服务器地址控制台提供的节点 IP与当前订单对应,不填本地电脑地址。
端口控制台提供的 VNC 端口客户端若单独提供端口栏,分别填写;不要自行猜测端口。
认证信息控制台提供的图形连接凭据不要假设 VNC 密码与 SSH 密码始终相同。
初始显示设置从较低分辨率开始先确认画面与输入正常,再根据带宽提高画质。

macOS 也可使用系统屏幕共享。更改登录密码后,按交付说明核对图形连接认证是否需要同步更新。不要把 VNC 服务直接暴露给不受信任的网络。

第四步 / 准备构建环境

把工具链检查写在第一次构建之前

以下命令在云端 Mac 上执行。先核对系统和已有工具,再安装缺少的组件。不要为照抄示例而覆盖团队已经固定的 Xcode、Ruby 或依赖版本。

1. 检查系统与 Xcode

sw_vers
uname -m
df -h /
ls /Applications
xcode-select -p
xcodebuild -version

xcode-select 指向独立命令行工具时,不能据此判断完整 Xcode 已可用。若未安装完整 Xcode,先准备团队许可范围内的安装包,解压后放入 /Applications;磁盘空间还要覆盖解压、依赖与归档产物。

2. 指定完整 Xcode 并完成初始化

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license
sudo xcodebuild -runFirstLaunch
xcodebuild -version
xcodebuild -showsdks

上例假定应用名为 Xcode.app。多版本并存时改成实际路径;接受许可前先阅读条款。为避免改变其他任务的工具链,单次构建也可以设置 DEVELOPER_DIR 指向所需版本。

3. 核对 Homebrew、Ruby 与 Fastlane

command -v brew
brew --version
ruby --version
bundle --version

如果 Homebrew 尚未安装,使用团队审核的安装流程;不要粘贴来源不明的远程安装脚本。Apple Silicon 常见安装路径为 /opt/homebrew,以实际输出为准。已安装但当前会话找不到时,可加载它的环境:

eval "$(/opt/homebrew/bin/brew shellenv)"
brew install ruby
export PATH="$(brew --prefix ruby)/bin:$PATH"
gem install bundler
bundle install
bundle exec fastlane --version

后四条在工程目录中执行,并假定仓库已有固定 Fastlane 依赖的 Gemfile 与锁文件。没有这些文件时,先由团队确定依赖版本并提交锁文件,再安装。不要用管理员权限向系统 Ruby 批量安装构建依赖。

4. 先验证无签名 archive

read -r -p "Workspace path: " WORKSPACE
read -r -p "Shared scheme: " SCHEME
xcodebuild -list -workspace "$WORKSPACE"
xcodebuild \
  -workspace "$WORKSPACE" \
  -scheme "$SCHEME" \
  -destination 'generic/platform=iOS' \
  -archivePath "$HOME/BuildArtifacts/FirstBuild.xcarchive" \
  CODE_SIGNING_ALLOWED=NO \
  archive

先进入工程目录,安装项目声明的依赖,并确认 scheme 已共享。只有 .xcodeproj 的工程使用 -project 替换 -workspace。此命令用于验证编译与归档链路,不会生成可分发的签名包,也不保证所有依赖签名的构建脚本都能通过。

第五步 / 接入自动化

本地命令跑通后,再注册 runner

GitHub Actions 与 GitLab Runner 任选与你的代码平台一致的一种。先用一条受信任分支验证任务,确认服务用户、环境变量和钥匙串访问,再让正式流水线接管。

GitHub Actions:注册与安装用户服务

在仓库或组织的 runner 设置中选择 macOS 与 ARM64,按平台当前指引下载软件包、校验并解压到独立目录。以下命令在解压目录执行,注册 URL 与短期 token 都从当前设置页面取得。

read -r -p "Repository or organization URL: " RUNNER_URL
read -r -s -p "Registration token: " RUNNER_TOKEN
printf '\n'
./config.sh \
  --url "$RUNNER_URL" \
  --token "$RUNNER_TOKEN" \
  --labels armvnc,macos,arm64
unset RUNNER_TOKEN
./svc.sh install
./svc.sh start
./svc.sh status

在工作流中使用 runs-on: [self-hosted, macOS, ARM64, armvnc],并核对平台显示的实际标签。用户服务的启动与登录会话有关,安装后应验证重新登录与重启后的恢复行为,不把注册成功等同于任意状态下都会执行任务。

GitLab Runner:注册 shell 执行器

先在项目或组设置创建 runner,取得认证 token。Homebrew 已配置后,可安装 runner 并按交互提示注册。服务使用当前用户运行,构建文件与凭据也应归该用户管理。

brew install gitlab-runner
read -r -p "CI server URL: " CI_SERVER_URL
read -r -s -p "Runner authentication token: " RUNNER_TOKEN
printf '\n'
gitlab-runner register \
  --url "$CI_SERVER_URL" \
  --token "$RUNNER_TOKEN" \
  --executor shell \
  --description "ArmVNC macOS ARM64"
unset RUNNER_TOKEN
gitlab-runner install
gitlab-runner start
gitlab-runner status
gitlab-runner verify

在平台设置中配置标签与受保护分支策略,流水线的 tags 要与 runner 标签一致。用户服务通常依赖登录会话;按当前 runner 版本说明检查 LaunchAgent 和启动行为,不要再用另一套服务管理方式重复启动同一个实例。

把这四项放进 CI 的第一条任务

  1. 输出 whoami、xcode-select -p 与 xcodebuild -version,确认任务不是跑在另一套环境里。
  2. 显式加载工具链 PATH。后台服务不一定读取交互终端的 shell 配置。
  3. 先执行无签名构建,再配置受控钥匙串与签名步骤;不要在日志中输出密钥、密码或 token。
  4. 设置产物回传与清理策略。公开来源的未审查代码不要直接运行在持有签名材料的 runner 上。

节点全年 365 天正常运行,但 CI 进程仍由你管理。退出登录、更新系统或重启之后,应确认 runner 服务、网络和签名环境均已恢复;退租前先移除平台注册关系、撤销凭据并回传产物。

把术语换成操作含义

八个词,读懂交付与连接

判断一个概念是否重要,先看它会改变哪一步操作:资源归属、连接方式、任务执行,或多机协作。

物理节点
机房中一台实际的 Mac。控制台提供的是这台设备的连接信息,不是你本地电脑上的开发环境。
独享物理机
一个订单独占整台 Mac 的计算与存储资源。你负责安排自己的任务并发、依赖和缓存。
非虚拟机
服务以实际物理设备交付,直接使用原生 macOS。图形界面与命令行都可用于工作流。
VNC
一种远程图形连接协议。适合从不同操作系统查看和操作 Mac 桌面,体验受网络与画质设置影响。
屏幕共享
macOS 自带的图形远程连接方式。使用 Mac 客户端时,可按交付信息连接节点桌面。
self-hosted runner
由你注册并管理的 CI 执行节点。代码平台派发任务,云端 Mac 上的 runner 进程执行构建。
统一内存
Apple Silicon 的 CPU 与 GPU 共用的内存资源。模型、构建任务与系统进程会共同占用它。
Thunderbolt 5 并联
多台设备通过 Thunderbolt 5 连接的附加配置,按每台计费。它不自动把多台 Mac 的内存合并为一个地址空间,任务仍需自行编排。
下一步 / 按验收结果继续

构建已通,就把流程固定下来

把已验证的 Xcode 版本、依赖锁文件和构建命令写进仓库。遇到问题时,先定位连接层、工具链层还是工程层,再携带最小复现信息求助。

调整图形连接

核对 VNC、屏幕共享与 SSH 的适用方式,继续检查分辨率、隧道和断线重连。这是连接说明,不是远程操作入口。

阅读远程连接说明

决定长期配置

对照真实工程的内存与磁盘占用,核对四种周期和存储附加项,再确定常驻 CI 的租用方式。

核对租用方案

定位未通过的环节

查看开通、连接、支付与可用率问题。提交工单时附订单号、节点代号、故障时段与脱敏日志,不附密码。

打开帮助中心

用真实工程,完成第一次验收

从天租开始,先确认连接、依赖和 archive。仅 USDT-TRC20 与 Visa / Mastercard / Amex(经 Stripe),USD 结算。