代码仓库权限
确认仓库使用 SSH 还是短期访问令牌,列出私有依赖、子模块与制品仓库。不要复制长期有效的个人私钥;为云端 Mac 单独生成密钥,并只授予项目所需权限。
从订单到首个归档
这不是一份只讲“如何登录”的说明。你将从两档物理设备中选型,确定四个亚太节点之一,随后完成凭据加固、工具链恢复、代码与签名验证、CI Runner 接入,并用一份可复核记录验收首个任务。
开始前准备
准备阶段的目标是把设备配置、节点、访问方式和数据责任写清楚。缺少其中一项,后面的环境恢复就容易变成临时试错。
确认仓库使用 SSH 还是短期访问令牌,列出私有依赖、子模块与制品仓库。不要复制长期有效的个人私钥;为云端 Mac 单独生成密钥,并只授予项目所需权限。
整理证书、描述文件、Keychain 访问要求与归档导出方式。只迁移完成测试所需的脱敏副本,记录导入顺序和访问控制,避免把完整凭据写进仓库或构建日志。
从新加坡、日本(东京)、韩国(首尔)、香港中选择目标节点。先从实际办公网络测试连接路径;团队跨地区协作时,应由主要操作者和 CI 来源网络分别验证。
短期验证可按天或周执行,稳定项目可按月或季安排。无论选择哪种周期,都应提前确定备份位置、产物导出目录和租用结束前的迁出负责人。
下单与开通
订单只需要明确机型、节点、计费周期和附加项。实际可用状态以控制台实时返回为准,目录内两档机型均覆盖四个在售节点。
NUMACS M4 Core 为 M4、16GB RAM、256GB SSD,适合单项目维护、日常调试和轻量自动化。NUMACS M4 Plus 为 M4、24GB RAM、512GB SSD,更适合多任务构建、更大的依赖缓存与并行测试。
可选新加坡、日本(东京)、韩国(首尔)、香港。优先选择主要操作者网络路径稳定、往返延迟较低的节点;CI 接入前再从 Runner 所在网络复测一次。
支持按天、周、月、季租用。周期应覆盖环境恢复、首轮构建、故障修正和产物导出,不要只按“安装需要多久”估算。
大型素材库、多个 Xcode 版本、模拟器运行时和长期构建缓存会迅速占用空间。需要额外容量时,可在下单阶段选择 +1TB SSD、+2TB SSD 或 Thunderbolt 5 并联。
首次安全登录
收到设备信息后,不要立即导入代码和证书。先完成凭据轮换、访问路径验证和管理员权限检查,把干净状态记录下来。
首次进入 macOS 图形界面后立即设置独立强密码。不要复用仓库、邮箱或团队共享系统的密码,也不要把凭据写入聊天记录和自动化脚本。
在本地生成专用于该设备的密钥对,将公钥写入授权列表。验证密钥登录成功后,再关闭不需要的访问方式,并记录密钥轮换负责人。
检查分辨率、键盘布局、剪贴板策略和空闲断开行为。远程桌面用于图形工具,SSH 用于脚本与诊断;两条路径都应单独验证。
执行一次受控的管理员命令,确认软件安装和系统设置权限正常。不要通过关闭系统安全机制来绕过权限问题,应先定位命令、文件所有者和执行上下文。
迁移路径
不要一次复制整个本地目录。数据、工具链和 CI 的失败原因不同,分开迁移才能快速回滚,并判断问题来自文件、版本还是执行环境。
先迁移仓库、配置清单和必要素材,再按需恢复大型缓存。使用校验值或文件数量核对结果,避免把临时目录、派生数据和过期归档一起复制。
从版本清单重新安装 Xcode、Homebrew、Ruby、Node.js 和包管理器。依赖锁文件应作为恢复依据,缓存只用于提速,不能代替可重复安装流程。
注册专用 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 访问和归档导出应分开验证。这样即使正式项目失败,也能快速判断是仓库、依赖还是签名权限问题。
使用专用 SSH 密钥克隆仓库,检查子模块和私有依赖权限。依赖安装采用锁文件模式,禁止在迁移过程中顺手更新全部依赖。
仅导入测试所需的脱敏签名资产,限制 Keychain 文件权限。任何恢复码、私钥或完整支付凭据都不应进入工单、仓库和共享日志。
先对最小测试项目执行构建、测试和归档,再切换到正式工程。归档成功不等于导出成功,导出步骤应单独保存日志和产物校验结果。
CI Runner 接入
Runner 接入的重点不是“在线”,而是任务目录可清理、缓存有边界、并发不会互相污染、失败日志能够保留。
注册专用 Runner,只执行一条无签名的环境检查任务。
加入依赖恢复和单元测试,确认清空缓存后仍可成功。
加入归档步骤,验证 Keychain 在非交互会话中的访问范围。
加入产物导出、校验和上传,记录完整任务耗时基线。
首个任务验收
验收应覆盖从代码拉取到产物导出的完整链路,并记录耗时、资源余量和失败重试结果。以后升级工具链或切换项目时,这份记录就是比较基准。
从空工作目录克隆目标提交,验证私有依赖、子模块和仓库权限,不依赖旧目录残留。
使用锁文件恢复全部依赖,记录冷缓存与热缓存耗时,确认没有发生隐式版本升级。
运行单元测试和必要的自动化测试,记录失败用例、重试次数与日志位置。
核对构建配置、签名身份和归档位置,确认非交互任务与图形界面执行结果一致。
验证导出文件可以读取,记录文件大小和校验值,并将必要产物复制到独立备份位置。
保存 CPU 峰值、内存压力、构建前后磁盘余量、总耗时和缓存大小,作为后续异常比较依据。
日常维护
NUMACS 物理节点全年 365 天正常运行,不设置定期停机时段。设备侧仍需要持续维护缓存、磁盘、备份和访问凭据,避免项目状态只存在于一台机器上。
查看工作目录、DerivedData、模拟器运行时、包管理器缓存和历史归档。先按来源清理,不使用无法解释范围的全盘删除命令。
每次调整 macOS、Xcode、Ruby、Node.js 或关键依赖后,重新执行测试与归档,并记录变更前后的耗时和失败差异。
定期轮换 SSH 密钥、仓库访问令牌和设备密码。成员离开项目或权限变化时立即撤销对应访问,不共享个人密钥。
租用结束前导出代码变更、构建产物、环境清单、CI 配置和必要日志。对迁出文件执行校验,并在其他位置实际打开验证。
选择机型、节点、周期与附加项后,在控制台统一查看订单和设备。仅支持 USDT-TRC20 与 Visa / Mastercard / Amex(经 Stripe),全部以美元(USD)结算。