从订单到首个归档

把开发工作流迁到云端 Mac

这不是一份只讲“如何登录”的说明。你将从两档物理设备中选型,确定四个亚太节点之一,随后完成凭据加固、工具链恢复、代码与签名验证、CI Runner 接入,并用一份可复核记录验收首个任务。

2 档 固定硬件配置
4 节点 新加坡、日本(东京)、韩国(首尔)、香港
4 周期 按天、周、月或季租用
设备运行单 首个构建验收路径
准备就绪
SOURCE 本地 Mac
TARGET NUMACS 云端 Mac
  1. 01
    建立安全连接 更换初始凭据,写入 SSH 公钥,验证远程桌面。
    通过
  2. 02
    恢复项目工具链 锁定 Xcode、Ruby、Node.js 与依赖管理器版本。
    待执行
  3. 03
    运行测试与归档 保存耗时、日志、产物校验值与磁盘余量。
    待执行
运行单以“可以复现、可以回滚、可以核对”为完成标准,而不是以工具安装结束作为完成标准。

开始前准备

先决定迁移边界,再创建订单

准备阶段的目标是把设备配置、节点、访问方式和数据责任写清楚。缺少其中一项,后面的环境恢复就容易变成临时试错。

A

代码仓库权限

确认仓库使用 SSH 还是短期访问令牌,列出私有依赖、子模块与制品仓库。不要复制长期有效的个人私钥;为云端 Mac 单独生成密钥,并只授予项目所需权限。

B

签名资产管理

整理证书、描述文件、Keychain 访问要求与归档导出方式。只迁移完成测试所需的脱敏副本,记录导入顺序和访问控制,避免把完整凭据写进仓库或构建日志。

C

节点与网络路径

从新加坡、日本(东京)、韩国(首尔)、香港中选择目标节点。先从实际办公网络测试连接路径;团队跨地区协作时,应由主要操作者和 CI 来源网络分别验证。

D

周期与退出计划

短期验证可按天或周执行,稳定项目可按月或季安排。无论选择哪种周期,都应提前确定备份位置、产物导出目录和租用结束前的迁出负责人。

下单与开通

四个选择决定设备运行单

订单只需要明确机型、节点、计费周期和附加项。实际可用状态以控制台实时返回为准,目录内两档机型均覆盖四个在售节点。

01 / MODEL

选择固定硬件

NUMACS M4 Core 为 M4、16GB RAM、256GB SSD,适合单项目维护、日常调试和轻量自动化。NUMACS M4 Plus 为 M4、24GB RAM、512GB SSD,更适合多任务构建、更大的依赖缓存与并行测试。

02 / REGION

选择连接节点

可选新加坡、日本(东京)、韩国(首尔)、香港。优先选择主要操作者网络路径稳定、往返延迟较低的节点;CI 接入前再从 Runner 所在网络复测一次。

03 / PERIOD

选择租用周期

支持按天、周、月、季租用。周期应覆盖环境恢复、首轮构建、故障修正和产物导出,不要只按“安装需要多久”估算。

04 / OPTIONS

核对存储与并联需求

大型素材库、多个 Xcode 版本、模拟器运行时和长期构建缓存会迅速占用空间。需要额外容量时,可在下单阶段选择 +1TB SSD、+2TB SSD 或 Thunderbolt 5 并联。

首次安全登录

先加固入口,再恢复项目

收到设备信息后,不要立即导入代码和证书。先完成凭据轮换、访问路径验证和管理员权限检查,把干净状态记录下来。

  1. 01

    更改初始凭据

    首次进入 macOS 图形界面后立即设置独立强密码。不要复用仓库、邮箱或团队共享系统的密码,也不要把凭据写入聊天记录和自动化脚本。

  2. 02

    配置 SSH 公钥

    在本地生成专用于该设备的密钥对,将公钥写入授权列表。验证密钥登录成功后,再关闭不需要的访问方式,并记录密钥轮换负责人。

  3. 03

    验证远程桌面

    检查分辨率、键盘布局、剪贴板策略和空闲断开行为。远程桌面用于图形工具,SSH 用于脚本与诊断;两条路径都应单独验证。

  4. 04

    确认管理员权限

    执行一次受控的管理员命令,确认软件安装和系统设置权限正常。不要通过关闭系统安全机制来绕过权限问题,应先定位命令、文件所有者和执行上下文。

迁移路径

把迁移拆成三条可验证路径

不要一次复制整个本地目录。数据、工具链和 CI 的失败原因不同,分开迁移才能快速回滚,并判断问题来自文件、版本还是执行环境。

SOURCE 本地 Mac
TARGET NUMACS 云端 Mac
PATH 01

数据迁移

先迁移仓库、配置清单和必要素材,再按需恢复大型缓存。使用校验值或文件数量核对结果,避免把临时目录、派生数据和过期归档一起复制。

验证结果 仓库提交一致,素材校验通过,临时缓存未迁入
PATH 02

工具链恢复

从版本清单重新安装 Xcode、Homebrew、Ruby、Node.js 和包管理器。依赖锁文件应作为恢复依据,缓存只用于提速,不能代替可重复安装流程。

验证结果 命令路径、版本输出和项目依赖与基线一致
PATH 03

CI 接入

注册专用 Runner,设置工作目录、缓存边界、并发上限和失败日志保留。先跑无签名测试任务,再逐步加入归档与导出步骤。

验证结果 Runner 可调度,失败可复现,产物可追踪

开发环境安装

版本以项目基线为准,不以“最新”作为目标

新设备最常见的问题不是工具缺失,而是版本组合发生漂移。先恢复能稳定构建的组合,再在独立分支测试升级。

开发工具链恢复顺序与验收命令
层级 需要锁定的内容 恢复方法 验收证据
macOS 项目已验证的系统主版本与补丁范围 先记录当前系统,不在首轮迁移中跨主版本升级 sw_vers
Xcode Xcode 版本、命令行工具路径、SDK 安装指定版本并明确切换开发者目录 xcodebuild -version
Homebrew Brewfile、仓库来源、关键工具版本 按清单重新安装,不直接复制旧缓存目录 brew bundle check
Ruby 解释器版本、Bundler 版本、Gemfile.lock 使用项目版本文件恢复后执行依赖安装 ruby -v
Node.js 运行时版本、包管理器版本、锁文件 按版本文件安装,使用冻结锁文件模式恢复 node -v
项目依赖 CocoaPods、Swift Package、JavaScript 依赖 分层恢复,每层失败单独保留日志 依赖解析无隐式升级
建议做法

把版本输出保存为项目基线

在首次成功构建后,将系统、Xcode、Ruby、Node.js、包管理器和关键依赖版本输出保存到内部运行记录。下一次迁移或故障排查时,先比较基线,再修改环境。

sw_vers
xcodebuild -version
ruby -v
node -v
brew bundle check

代码与签名接入

先用测试项目验证权限,再处理正式归档

代码拉取、依赖恢复、Keychain 访问和归档导出应分开验证。这样即使正式项目失败,也能快速判断是仓库、依赖还是签名权限问题。

REPOSITORY

克隆与依赖恢复

使用专用 SSH 密钥克隆仓库,检查子模块和私有依赖权限。依赖安装采用锁文件模式,禁止在迁移过程中顺手更新全部依赖。

  • 确认默认分支与目标提交
  • 检查子模块和制品仓库访问
  • 保存依赖解析失败日志
SIGNING

签名资产导入

仅导入测试所需的脱敏签名资产,限制 Keychain 文件权限。任何恢复码、私钥或完整支付凭据都不应进入工单、仓库和共享日志。

  • 确认描述文件与目标标识匹配
  • 验证 Keychain 在非交互任务中的访问
  • 记录证书到期与轮换负责人
ARCHIVE

测试归档与导出

先对最小测试项目执行构建、测试和归档,再切换到正式工程。归档成功不等于导出成功,导出步骤应单独保存日志和产物校验结果。

  • 确认构建目标和 Release 配置
  • 检查归档日志中的签名身份
  • 验证导出产物可读取且校验值稳定

CI Runner 接入

把 Runner 当作专用执行节点管理

Runner 接入的重点不是“在线”,而是任务目录可清理、缓存有边界、并发不会互相污染、失败日志能够保留。

接入参数

执行身份
使用独立低权限账户运行任务,需要管理员权限的步骤单独审核。
工作目录
固定工作区根目录,项目间不共享 DerivedData、临时密钥和未声明缓存。
并发上限
先从单任务基线开始,再依据内存、磁盘和构建耗时逐步增加。
缓存策略
为依赖缓存设置键、容量和清理条件,缓存失效后仍应可以完整重建。
日志留存
保留失败阶段、命令退出码、关键工具版本和产物路径,不记录敏感值。

推荐接入顺序

  1. 01

    注册专用 Runner,只执行一条无签名的环境检查任务。

  2. 02

    加入依赖恢复和单元测试,确认清空缓存后仍可成功。

  3. 03

    加入归档步骤,验证 Keychain 在非交互会话中的访问范围。

  4. 04

    加入产物导出、校验和上传,记录完整任务耗时基线。

首个任务验收

一次成功不够,还要留下可复用基线

验收应覆盖从代码拉取到产物导出的完整链路,并记录耗时、资源余量和失败重试结果。以后升级工具链或切换项目时,这份记录就是比较基准。

  1. 拉取代码

    从空工作目录克隆目标提交,验证私有依赖、子模块和仓库权限,不依赖旧目录残留。

    记录提交值
  2. 安装依赖

    使用锁文件恢复全部依赖,记录冷缓存与热缓存耗时,确认没有发生隐式版本升级。

    保存版本清单
  3. 执行测试

    运行单元测试和必要的自动化测试,记录失败用例、重试次数与日志位置。

    保留测试报告
  4. 生成归档

    核对构建配置、签名身份和归档位置,确认非交互任务与图形界面执行结果一致。

    保存归档日志
  5. 导出产物

    验证导出文件可以读取,记录文件大小和校验值,并将必要产物复制到独立备份位置。

    核对校验值
  6. 记录资源基线

    保存 CPU 峰值、内存压力、构建前后磁盘余量、总耗时和缓存大小,作为后续异常比较依据。

    建立运行基线

日常维护

让设备保持可恢复,而不只是持续可连接

NUMACS 物理节点全年 365 天正常运行,不设置定期停机时段。设备侧仍需要持续维护缓存、磁盘、备份和访问凭据,避免项目状态只存在于一台机器上。

WEEKLY

检查磁盘与缓存

查看工作目录、DerivedData、模拟器运行时、包管理器缓存和历史归档。先按来源清理,不使用无法解释范围的全盘删除命令。

AFTER CHANGE

更新环境基线

每次调整 macOS、Xcode、Ruby、Node.js 或关键依赖后,重新执行测试与归档,并记录变更前后的耗时和失败差异。

REGULAR

轮换访问凭据

定期轮换 SSH 密钥、仓库访问令牌和设备密码。成员离开项目或权限变化时立即撤销对应访问,不共享个人密钥。

BEFORE EXIT

完成数据迁出

租用结束前导出代码变更、构建产物、环境清单、CI 配置和必要日志。对迁出文件执行校验,并在其他位置实际打开验证。

结束租用前

最后一次核对不要只看“文件已复制”

  • 所有未推送代码已进入受控仓库
  • 必要归档和导出产物已在独立位置验证
  • 环境版本、安装脚本和 CI 配置已保存
  • 临时凭据、私钥副本和敏感日志已清理

准备好运行第一份设备运行单?

选择机型、节点、周期与附加项后,在控制台统一查看订单和设备。仅支持 USDT-TRC20 与 Visa / Mastercard / Amex(经 Stripe),全部以美元(USD)结算。