从验收到稳定运行

把云端 Mac 接入你的构建工作流

收到设备信息后,先核对订单与物理节点,再完成连接、工具链复现和 CI 执行器注册。每一步都给出检查命令、完成标准与出错时需要保留的证据。

在售节点
5 个物理节点
在售配置
2 档独享物理机
操作路径
9 组检查步骤
首次接入交接板 按顺序验证
01

核对交付记录

节点、配置、系统版本、租期和访问凭据必须与订单确认信息一致。

验收
02

建立首个会话

先验证命令行连接,再按工作需要建立图形会话并测试断线恢复。

连接
03

复现开发环境

锁定 Xcode、依赖工具和工作目录,不直接把旧机器全部文件原样覆盖。

配置
04

提交真实构建

用实际仓库执行一次归档或测试任务,记录耗时、日志和产物校验结果。

验证
交付状态 以控制台实时返回为准
开始前准备

先确认拿到的是哪台设备、哪个节点和多长租期

不要在信息尚未核对时开始搬迁环境。先登录控制台,逐项比对订单记录与设备详情;若字段不一致,保留页面信息并提交工单。

01

节点与网络方向

确认节点是新加坡、日本东京、韩国首尔、香港或美国东部之一。记录节点代码,并从主要办公网络测试连接路径。

  • 确认团队主要访问地点与节点时区
  • 分别在办公网络和备用网络测试
  • 记录延迟、抖动与丢包,而非只看单次 ping
02

设备配置

目录包含两档,收到信息后应逐字段核对芯片、内存和存储。

  • 基础档:M4、16GB、256GB
  • 高配档:M4 Pro、64GB、2TB
  • 附加存储以订单确认记录为准
03

系统与访问资料

核对系统版本、主机名、连接地址、端口和临时凭据。首次登录后立即按团队规范轮换凭据。

  • 不要把密码或私钥粘贴到公开日志
  • 将凭据保存在受控的密钥管理工具中
  • 确认命令行与图形连接分别需要哪些资料
04

租期与退出时间

按天、周、月或季租用时,都应在开始前确定数据导出时间和任务停止点,避免把清理工作留到最后。

  • 记录租期开始与结束信息
  • 预留产物导出和缓存清理时间
  • 确认续用或调整需求的内部负责人
首次连接指南

先用命令行确认设备可达,再建立图形会话

命令行适合做基础验收和自动化,图形会话适合 Xcode、模拟器及需要可视界面的操作。两种方式应分别验证,不把其中一种成功视为全部连接正常。

命令行连接

建立最小可验证会话

  1. 1
    检查目标信息

    从控制台复制主机地址、端口和用户名,核对字符与大小写,不从旧工单复用过期信息。

  2. 2
    校验主机指纹

    首次连接时比对交付信息。指纹变化时先停止连接并确认原因,不直接删除本地记录后重试。

  3. 3
    执行只读检查

    确认当前用户、主机名、系统版本、磁盘与 Xcode 路径,不立即安装或删除软件。

  4. 4
    验证断线恢复

    主动断开后重新连接,确认会话恢复方式、长任务托管策略和日志落盘目录。

图形远程访问

把画面质量与任务稳定性分开验证

  1. 1
    从保守画质开始

    先使用较低分辨率和色彩质量确认会话稳定,再逐步提高设置,避免把画面卡顿误判为设备性能问题。

  2. 2
    保护凭据与剪贴板

    禁止在共享屏幕、录屏或未受控剪贴板中暴露密码、私钥和证书口令。

  3. 3
    锁定无人值守会话

    离开设备前锁定图形会话。多人协作时明确同一时间的操作人,避免并发修改环境。

  4. 4
    验证重连后的状态

    断线重连后检查前台应用、构建进程和磁盘写入是否仍在运行,不凭画面停顿判断任务已失败。

终端快速检查

用一组只读命令建立设备基线

以下命令覆盖芯片、内存、磁盘、系统版本、网络和开发工具路径。运行后保存输出,但提交工单前应移除用户名、内部仓库地址和其他敏感字段。

DPLYMAC / FIRST-RUN CHECK
printf '\n== CHIP ==\n'
system_profiler SPHardwareDataType | grep -E "Chip|Memory"

printf '\n== DISK ==\n'
diskutil info / | grep -E "Device Node|File System|Disk Size|Free Space"

printf '\n== SYSTEM ==\n'
sw_vers
uname -m

printf '\n== NETWORK ==\n'
route -n get default | grep interface
ping -c 5 1.1.1.1

printf '\n== XCODE ==\n'
xcodebuild -version
xcode-select -p
swift --version

printf '\n== TOOL PATHS ==\n'
command -v git
command -v ruby
command -v fastlane

怎样判断通过

  • 芯片与内存匹配订单中的配置
  • 根卷可读写且剩余空间满足任务需要
  • 系统架构输出为 arm64
  • 默认网络接口存在,连续测试无明显丢包
  • Xcode 与命令行工具路径指向预期版本

需要保留什么

  • 命令执行时间与节点
  • 完整命令,不只保留最后一行
  • 原始输出与脱敏后的工单版本
  • 预期结果、实际结果和复现次数
Xcode 与签名环境

先锁定工具链,再导入构建所需材料

环境一致性来自明确版本与可重复步骤,而不是把旧机器的整个用户目录复制过来。签名材料应最小化导入,并在租期结束前完成清理。

检查项 操作 完成标准
Xcode 版本

运行 xcodebuild -version,记录主版本与构建号;项目固定版本时,将要求写入仓库文档。

版本与项目要求一致
命令行工具

运行 xcode-select -p,必要时用团队批准的路径切换,不在任务中途临时升级。

路径指向目标 Xcode
证书导入

仅导入当前项目需要的证书,使用受控传输方式,并限制钥匙串访问范围。

目标签名身份可被识别
描述文件

核对应用标识、团队信息、能力与有效状态,避免混用其他项目遗留文件。

归档目标匹配项目配置
钥匙串解锁

在构建脚本中按最小时间范围解锁,任务结束后恢复锁定,不把口令写入仓库或普通日志。

非交互构建可读取所需项
构建前验证

先执行依赖解析、项目列表与签名设置检查,再开始完整归档。

失败发生在正式构建前
迁移操作路径

把迁移拆成数据、工具链和执行器三次交接

每次只改变一个变量,并保留回退点。这样出现构建差异时,可以确认问题来自数据、依赖环境还是 CI 注册。

交接 01

数据同步

输入
源码、必要资源、依赖锁文件与构建脚本
操作
优先从版本库拉取;大文件单独校验,不复制无关缓存和旧产物
验证
提交版本、文件数量和校验值符合预期,敏感文件未进入仓库
常见失败
忽略规则遗漏文件、大小写路径差异、换行符改变、权限位丢失
回退点
保留干净工作目录,删除本次同步内容后可重新拉取
交接 02

工具链复现

输入
Xcode 要求、依赖清单、包管理锁文件与脚本运行时版本
操作
按文档安装最小工具集,锁定版本,并把路径与环境变量显式写入任务配置
验证
依赖解析成功,同一提交在本地命令与自动化脚本中得到一致结果
常见失败
隐式全局依赖、默认 Ruby 差异、Xcode 路径错误、缓存污染
回退点
保留版本清单和安装日志,可清空工具缓存后重新复现
交接 03

CI 接入

输入
执行器注册信息、队列标签、工作目录、缓存规则和并发上限
操作
注册单台执行器,先跑只读检查任务,再提交一个真实仓库的完整流水线
验证
任务被正确调度,退出码、日志、测试结果和产物均可追踪
常见失败
标签不匹配、工作目录复用、缓存键过宽、多个任务抢占同一资源
回退点
注销执行器并恢复手动构建,不影响已经验证的数据与工具链
CI/CD 接入

执行器能注册不等于流水线已经可靠

注册后至少验证一次冷缓存任务、一次热缓存任务和一次失败重试。工作目录、缓存与并发策略必须由流水线显式管理。

常见 CI 执行器的接入检查
平台 注册检查 工作目录 缓存策略 并发建议
GitHub Actions 确认自托管 Runner 标签与目标仓库或组织范围 每个任务使用独立工作区,结束后清理临时文件 缓存键包含锁文件摘要、Xcode 与架构信息 先单任务验证,再依据内存和磁盘压力提高并发
GitLab CI 核对 Runner 标签、保护分支权限与执行器状态 避免多个项目共享可写目录和同名产物路径 按项目、分支与依赖摘要划分缓存范围 为归档、测试和轻量检查设置不同队列
Jenkins 确认节点标签、远程根目录和凭据作用域 流水线结束后清理 workspace,但保留必要日志 将依赖缓存与构建产物分开管理 限制重型归档任务同时占用同一设备
自建 Runner 记录服务启动方式、运行用户和任务领取条件 按任务标识创建目录,退出时执行确定性清理 明确缓存所有者、容量上限和失效条件 用队列控制资源,不依赖脚本碰运气抢锁

注册完成

执行器在线、标签匹配、运行用户正确,并且只能读取被授权的仓库与凭据。

任务可复现

同一提交在冷缓存与热缓存条件下都能得到一致产物,失败时保留明确退出码。

目录可回收

临时签名文件、派生数据和构建中间物有确定清理规则,不依赖人工逐项删除。

并发有上限

根据 CPU、内存和 SSD 压力设置队列,不让多个归档任务互相挤占资源。

性能排查

先定位瓶颈属于哪一层,再调整参数

性能问题至少记录发生时间、节点、任务提交版本、复现步骤和对照结果。只描述“很慢”无法区分资源压力、网络路径与图形会话问题。

CPU

确认是持续计算还是短时峰值

记录高占用进程、线程数量和任务阶段。比较单任务与并发任务,检查是否存在重复构建、失控测试或后台索引。

进程采样
内存

查看内存压力与交换活动

记录峰值内存、压缩内存和交换变化。若任务只有并发时失败,应先降低并发再比较,而不是立即归因于网络。

压力对照
SSD

区分容量不足与随机读写拥塞

检查剩余空间、派生数据、依赖缓存和历史产物。清理前先记录目录体积,避免删除后失去问题证据。

容量与 I/O
网络

比较延迟、抖动、丢包与吞吐

使用固定本地网络连续测试,并与备用网络对照。仓库拉取慢时还要区分节点路径和依赖服务响应。

连续采样
图形会话

画面卡顿不等于构建进程变慢

降低分辨率和色彩质量后复测,同时通过命令行观察任务是否继续运行。记录重连后前台与后台状态。

会话分离
安全与退出

从首次登录开始准备最终交接

凭据、签名材料、构建产物和缓存都有明确所有者。租期结束前按顺序导出、验证、移除和复查,不把清理工作交给临时记忆。

持续执行

凭据与权限

  • 首次连接后轮换临时凭据
  • 按仓库与任务划分最小权限
  • 定期检查执行器和自动化密钥作用域
  • 不在脚本、仓库和普通日志中写入口令
导出之前

产物与数据

  • 导出归档、测试报告和必要日志
  • 在目标位置核对文件数量与校验值
  • 确认仓库提交与远端分支已经同步
  • 记录仍需保留的构建基线
租期结束前

环境清理

  • 注销 CI 执行器并撤销关联凭据
  • 移除证书、描述文件、私钥和恢复码
  • 删除工作目录、临时文件和敏感缓存
  • 再次检查下载目录、桌面和命令历史
升级支持

让工单从第一轮就具备可复现条件

已有订单的问题请登录控制台提交工单。无法登录时可发送邮件至 support@deploymac.com,提交前必须移除密码、私钥、证书口令和其他敏感凭据。

故障记录模板 复制字段,不复制敏感信息
订单标识

填写控制台中可用于定位订单的标识

节点

新加坡、日本东京、韩国首尔、香港或美国东部

发生时间

写明时区,并给出首次发生与最近复现时间

设备配置

基础档或高配档,以及附加存储信息

复现步骤

从干净状态开始,按实际执行顺序逐项列出

命令输出

附完整命令、退出码和脱敏输出,不只附截图

预期结果

说明正常情况下应出现的状态、文件或返回值

实际结果

说明偏差、复现次数以及是否影响全部任务

已尝试操作

列出重试、重连、降并发或清缓存等动作及结果

已有订单与连接故障

控制台工单能关联订单、节点和设备信息,适合处理交付核对、连接异常与运行问题。

登录控制台提交工单

尚未下单或无法登录

邮件中写明用途、目标节点、预计租期和问题影响范围。请勿发送任何密码、私钥或证书口令。

发送支持邮件
下一步

按任务负载选择配置,再开始首次接入

基础档适合轻量构建和日常开发;高配档适合高内存实验、多项目并发和更重的构建任务。两档均为独享物理机、非虚拟机。