从节点交付到构建基线

把云端 Mac 接入你的开发与 CI 流程

先选定区域、机型与周期,再完成凭据加固、SSH 验证、图形桌面初始化和首个 Xcode 构建。每一步都留下可复查的状态记录。

节点性质
独享 Apple Silicon 物理节点
在售区域
SG · JP · KR · HK
完成目标
首个构建与 CI 测试任务通过
ORB / NODE COMMISSIONING RUNBOOK 01
选型 加固 连接 构建 接入 CI
目标节点 Apple Silicon / 独享物理机
区域
待选择
SSH 密钥
待录入
Xcode 基线
待验证
运行器
待注册
交付判定 全部检查通过后再承载正式任务
地址、凭据与实时可用状态以控制台返回为准 365 DAYS
开始前检查

先把六项输入准备齐

选型不是只看芯片。区域、访问方式、工具链版本和团队责任人会直接影响节点开通后的第一小时。

01

目标区域

在新加坡、日本(东京)、韩国(首尔)和香港中选择离主要开发者或制品存储路径更合适的区域。不要只按个人所在地判断,也要考虑代码仓库与依赖源的网络路径。

SG · JP · KR · HK
02

节点机型

轻量构建可从 Orb M4 16 开始;更大的依赖图和并行任务可评估 Orb M4 24;高内存构建或本地 AI 实验选择 Orb M4 Pro。

共 3 档配置
03

租用周期

短期验证可选日或周,稳定流水线可选月或季。先记录内部验收时间,再决定是否续期,避免将业务发布节点交给无人跟进的临时订单。

日 · 周 · 月 · 季
04

SSH 公钥

准备专用于该节点的 Ed25519 公钥,并确认私钥只保存在授权设备或受控密钥系统中。不要复制个人日常密钥作为团队共享凭据。

推荐 Ed25519
05

团队访问清单

明确节点负责人、CI 管理者和故障联系人。每位成员使用独立密钥,保留加入、变更和撤销记录,不用一份凭据覆盖整个团队。

一人一份凭据
06

macOS 工具链

提前锁定 macOS、Xcode、命令行工具、Ruby、Node、CocoaPods 和依赖管理器版本。把版本要求写进仓库,节点初始化时逐项核对。

版本必须可复现
订购与交付

用三次选择确定节点目录

控制台会按机型展示可选区域。目录内组合常态可订,实际可用状态以控制台实时返回为准。

  1. 01

    选择三档机型之一

    Orb M4 16 为 M4、16GB 内存、256GB 存储;Orb M4 24 为 M4、24GB 内存、512GB 存储;Orb M4 Pro 为 M4 Pro、64GB 内存、2TB 存储。

  2. 02

    选择区域与租用周期

    区域可选新加坡、日本(东京)、韩国(首尔)或香港;周期可选日、周、月或季。团队应把区域代码和续期时间写入内部资产记录。

  3. 03

    核对订单并等待交付记录

    确认机型、区域、周期和附加项后完成下单。节点地址、初始访问资料与服务状态会在控制台中提供,不要通过非授权渠道转发。

节点凭据与安全

先收紧入口,再安装开发环境

初始资料只用于建立第一条受控连接。完成密钥验证、访问调整和恢复记录前,不要导入生产仓库或签名材料。

FIRST ACCESS RECORD 首次登录后执行

把临时访问改造成可审计入口

  • 核对交付资料 确认节点编号、地址、端口和区域与订单一致,并把核对结果记录到团队资产清单。
  • 写入独立 SSH 公钥 为管理员、开发者和自动化运行器分配不同密钥,避免人员访问与 CI 访问共用同一私钥。
  • 调整访问设置 确认密钥登录可用后,再收紧临时凭据的使用范围。每次修改后保留一条已验证的恢复路径。
  • 保存恢复信息 记录节点编号、授权成员、密钥指纹、恢复责任人和最后验证时间,恢复资料应与节点本身分开保存。
凭据边界

人员与自动化分离

开发者密钥用于交互排查,运行器密钥只授予流水线所需权限。成员离开团队时撤销对应公钥,不更换全员共用凭据。

独立指纹可追踪
恢复验证

修改前先确认回退路径

网络、SSH 或图形会话设置变更前,保留当前可用会话,并确认控制台中的恢复信息已经由第二位负责人复核。

查看连接排查步骤
首次 SSH 连接

先验证指纹,再验证系统状态

不要跳过主机指纹核对。地址与端口来自控制台,可信指纹应通过团队已确认的交付记录比对。

节点接入记录 待执行
# 仅在已取得控制台地址后设置变量
export NODE_HOST="节点地址"
export NODE_PORT="22"

# 修正专用私钥权限
chmod 600 ~/.ssh/orbvps_node

# 读取并显示主机指纹,随后与交付记录核对
ssh-keyscan -p "$NODE_PORT" "$NODE_HOST" \
  | ssh-keygen -lf -

# 发起首次连接
ssh -p "$NODE_PORT" \
  -i ~/.ssh/orbvps_node \
  nodeadmin@"$NODE_HOST"

# 登录后确认硬件、系统与磁盘状态
$ uname -m
arm64
$ sw_vers
$ sysctl -n machdep.cpu.brand_string
$ df -h /
$ uptime
SSH ACCEPTANCE 4 CHECKS
  1. 指纹一致 扫描结果必须与可信交付记录一致。若不一致,停止连接并通过控制台工单核验。
  2. 密钥权限正确 私钥权限过宽时,SSH 会拒绝加载。将权限修正为仅当前用户可读写。
  3. 架构为 arm64 登录后确认处理器架构和芯片信息,避免在错误主机上继续部署工具链。
  4. 磁盘与运行时间可读 记录根卷余量、系统版本和运行时间,作为后续构建故障排查的初始状态。
图形桌面初始化

把 VNC 会话调整为可重复的工作环境

图形桌面适合完成显示、系统偏好和 Xcode 首次交互设置。公开页面不提供连接凭据,具体地址与访问资料只在开通后查看。

DESKTOP BASELINE 图形会话验收单

每项设置完成后退出并重新连接一次,确认配置在新会话中仍然有效。

01

显示与分辨率

先选择适合当前网络和屏幕的分辨率。文字过小或画面延迟明显时,优先降低分辨率,再评估网络路径。

02

系统语言与时区

统一团队约定的系统语言、地区格式和时区,使构建日志、日期输出与自动化脚本保持一致。

03

锁屏策略

确认锁屏不会中断需要持续运行的任务,同时限制未授权访问。交互会话和 CI 任务应分别验证。

04

断线重连

主动断开一次图形会话,再重新连接并确认桌面状态、分辨率和正在运行的进程符合预期。

迁移路径

从本地 Mac 迁到稳定的云端构建节点

迁移分三段进行。先移动可验证的数据,再锁定工具链,最后接入 CI。不要把仓库、依赖和自动化配置一次性无检查地复制过去。

LOCAL
01

迁移数据与仓库

只迁移需要的仓库、依赖锁文件、构建脚本和测试数据。排除临时缓存、旧制品及无主文件,迁移后校验仓库状态与关键文件摘要。

  • 确认默认分支与远端地址
  • 检查子模块和大文件依赖
  • 对测试数据执行脱敏
TOOLCHAIN
02

安装并锁定工具链

按仓库要求安装 Xcode、命令行工具和依赖管理器。将实际版本输出保存到基线记录,不以“最新版”代替明确版本号。

  • 记录 Xcode 与 SDK 版本
  • 按锁文件恢复依赖
  • 固定 Shell 与运行时路径
CLOUD MAC
03

接入 CI 并验证回滚

注册 self-hosted runner 后先运行受控测试任务。确认失败日志、缓存清理和恢复步骤可执行,再逐步接入正式分支。

  • 用专用标签限制任务范围
  • 验证缓存命中与清理
  • 演练停用运行器和回退

迁移完成标准:同一提交在本地和云端 Mac 上使用已记录的工具链完成构建,关键测试结果一致,并且能够按文档重新部署。

首次构建

生成一份可复查的成功基线

第一次构建的目标不是追求最短耗时,而是证明工具链、依赖、权限和输出路径均可重复。

  1. 01

    检查 Xcode 路径与版本

    确认当前选择的开发者目录、Xcode 版本和可用 SDK 与项目要求一致。

  2. 02

    接受许可并安装依赖

    接受 Xcode 许可后,严格依据锁文件安装 Ruby、Node、CocoaPods 或其他项目依赖。

  3. 03

    运行受控构建

    明确指定 workspace、scheme 和 configuration,并将完整标准输出保存到独立日志文件。

  4. 04

    保存基线记录

    记录提交号、工具链版本、开始与结束时间、退出码及制品位置,作为后续变更对照。

首次构建基线 命令示例
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ xcodebuild -version
Xcode <项目要求版本>

$ sudo xcodebuild -license accept
$ bundle install
$ bundle exec pod install

$ mkdir -p build-logs
$ set -o pipefail
$ xcodebuild \
  -workspace App.xcworkspace \
  -scheme App \
  -configuration Release \
  clean build \
  | tee build-logs/first-success.log

** BUILD SUCCEEDED **
接入 CI

让运行器只接收它应该执行的任务

self-hosted runner 接入后,先用专用标签和测试分支限制范围,再逐步开放正式构建。

RUNNER PROFILE

运行器身份

名称
orb-m4-ci-01
标签
macos · arm64 · xcode
工作目录
/Users/runner/work
并发策略
从单任务开始验证
ACCESS POLICY

权限与密钥

  • 单独的运行器用户 不要让自动化任务长期使用管理员交互账户。
  • 按用途拆分密钥 仓库读取、制品写入和部署操作分别授予最低必要权限。
  • 敏感值不写入仓库 通过受控的 CI 变量注入,并检查日志不会回显完整内容。
CACHE CONTROL

缓存与恢复

  • 缓存键带版本 将锁文件摘要、架构和工具链版本纳入缓存键。
  • 允许干净重建 每条流水线都应能在清空缓存后完成一次完整构建。
  • 限制工作目录增长 定期检查 DerivedData、归档和临时制品占用。
CONTROLLED TEST JOB

先跑一条可预测的测试任务

任务只执行环境输出、依赖恢复、单元测试和一次无发布动作的构建。确认标签路由正确、日志完整、缓存可清理、失败时能停止后,再接入正式分支。

预期退出码
0 / 成功
必须留存
日志、提交号、制品摘要
失败处理
停止正式任务并回到基线检查
上线前核对

六项状态全部明确后再承载正式构建

把下面的检查结果写进团队运行手册。节点可以全年运行,但构建流程仍需要明确的数据、监控和响应责任。

备份

仓库、构建配置、密钥恢复信息和必要制品均有节点之外的副本,并完成一次恢复验证。

已验证恢复

监控

至少记录磁盘余量、构建退出码、任务等待时间和运行器在线状态,并定义异常阈值。

指标有负责人

通知联系人

主负责人和替补负责人都能访问节点记录、构建日志与控制台工单,交接路径已经写明。

主备联系人齐全

续期时间

订单周期和内部确认时间已登记,不依赖单个成员记忆。配置变更前先评估现有任务窗口。

周期已登记

访问撤销

已列出人员密钥、运行器密钥和对应权限,能够在不影响其他成员的情况下单独撤销。

一项一份记录

故障联系路径

节点编号、发生时间、复现步骤和脱敏日志可随时整理,并能由授权成员登录控制台提交工单。

材料可直接提交
准备部署

从一台可验证的云端 Mac 开始

选择机型、区域与周期,开通后按本指南完成安全接入、首次构建和 CI 验收。