开发与连接支持

把远程 Mac 接入、构建与故障排查一次理顺

从领取连接信息到跑通 Xcode、签名和持续集成,按任务查步骤。每个检查项都对应可观察结果,遇到问题时也能准备一份可复现的诊断记录。

Apple Silicon 物理节点,订单独享一台设备,非虚拟机。首次连接前请先核对节点、系统版本与访问方式。

REMOTE SESSION HANDOFF 远程会话交接板
SESSION / 05
设备归属
订单对应单台独享物理机
访问方式
图形界面与 SSH
系统版本
首次连接后立即核对
会话时区
按节点与团队流程设置
交付阶段 01—05
  1. 01确认订单与节点核对机型、区域和租期
  2. 02领取访问凭据仅在控制台安全查看
  3. 03建立远程会话先验证图形界面和 SSH
  4. 04配置开发工具记录 Xcode 与依赖版本
  5. 05接入自动化任务隔离工作目录与缓存
支持范围 连接、工具链、CI/CD、系统与订单
在售节点 5 个
运行口径 全年 365 天正常运行
动态信息 以控制台实时返回为准
远程连接指南

先验证连接链路,再安装开发依赖

首次接入的目标不是立即迁移全部项目,而是确认凭据、网络、图形会话和 SSH 均稳定。基础链路未验证前,不建议开始长时间构建。

  1. 01

    在控制台领取凭据

    核对订单标识、节点、设备名称与访问方式。凭据只保存在受控密码管理工具中,不通过群聊或公开文档转发。

  2. 02

    做连接前检查

    确认本地网络没有拦截所需端口,关闭会改写路由的临时代理,记录当前公网出口与测试时间。先用稳定有线网络验证,再比较无线网络表现。

  3. 03

    校准分辨率与剪贴板

    先使用与本地显示器接近的分辨率,确认文字清晰度、键位映射和双向剪贴板。高分辨率会增加弱网下的画面更新压力,应先保证交互稳定。

  4. 04

    验证断线重连

    主动断开一次会话后重新连接,检查正在运行的命令是否仍在、图形会话是否恢复到原桌面。长任务建议放入可持续的命令会话或 CI/CD 作业中。

  5. 05

    收紧远程访问边界

    只向必要成员分发访问权限,团队成员变更后立即更新凭据。不要在脚本、仓库、构建日志或截图中保存私钥、完整密码和远程控制验证码。

命令执行实录

用三条结果确认节点具备构建能力

先确认 SSH 会话,再执行 Xcode 构建,最后验证自动化打包工具。示例只展示判断路径,项目名称、scheme、workspace 和导出参数应替换为团队自己的配置。

  • SSH:确认连接到订单对应设备,并记录系统版本。
  • xcodebuild:显式指定 workspace、scheme 与 configuration。
  • fastlane:先执行只读检查,再运行实际打包 lane。
build-session / assigned-node UTF-8 · zsh
$ ssh developer@assigned-mac
connection established
$ sw_vers -productVersion
current macOS version returned
$ xcodebuild -workspace App.xcworkspace \
  -scheme App -configuration Release build
Resolve Package Graph
CompileSwiftSources normal arm64
** BUILD SUCCEEDED **
$ bundle exec fastlane ios verify_build
Checking signing assets
Archive validation passed
fastlane finished successfully
Xcode 与签名

把版本、证书和权限拆开验证

多数签名故障不是单一开关造成的。先固定工具版本,再检查证书与描述文件是否匹配,最后确认自动化进程能够访问所需 Keychain 项。

A

确认 Xcode 选择路径

同时记录图形界面的 Xcode 版本与命令行工具路径。存在多个版本时,构建脚本必须显式选择,避免交互会话和 runner 使用不同工具链。

$ xcodebuild -version
$ xcode-select -p
$ xcrun --find swift
B

导入证书与描述文件

证书、私钥和描述文件必须属于同一签名流程。导入后先检查有效期、团队信息和目标标识,不要直接以正式打包任务作为第一次验证。

  • 证书与私钥成对存在
  • 描述文件覆盖目标标识
  • 构建配置引用正确团队
C

检查 Keychain 权限

图形会话中可用不代表自动化进程可用。应在 runner 对应用户与非交互环境下检查解锁方式、搜索列表和代码签名访问权限。

  • 确认执行用户一致
  • 限制解锁凭据的可见范围
  • 避免把敏感值写入构建日志
D

定位自动化签名失败

保留失败命令、目标名称、configuration、导出方式和首个错误行。不要只提交最后一行通用失败提示,它通常缺少真正原因。

  • 先查首个签名错误
  • 比较本地与 runner 环境变量
  • 用最小目标复现问题
工具链变更前的兼容性核对顺序
检查对象 需要记录 通过标准 失败时的下一步
macOS 当前版本、可用空间 目标 Xcode 明确支持 暂停变更并核对兼容矩阵
Xcode 版本、选择路径、SDK 命令行与图形界面一致 修正工具路径后重跑最小构建
签名材料 证书状态、描述文件、团队 目标标识与导出方式匹配 重新导入并检查 Keychain 权限
项目依赖 锁文件、运行时、插件版本 干净目录可重复安装 清理局部缓存并保留失败日志
Self-hosted runner

让自动化任务可隔离、可清理、可复现

runner 不应直接复用日常开发目录。为仓库、依赖缓存、构建产物和临时文件划分边界,才能避免一次失败任务污染下一次构建。

GITHUB ACTIONS 仓库或组织级 runner

先用单仓库验证,再扩大任务范围

  1. 注册:在对应仓库或组织生成短时注册信息,并在目标设备上完成 runner 配置。
  2. 标签:使用能表达芯片、用途和工具链的标签,避免作业被派发到错误环境。
  3. 服务:以固定的非特权用户运行,确认重启后能够恢复接单。
  4. 验证:先跑版本检查与最小构建,再接入归档、测试和发布任务。
GITLAB RUNNER 项目或分组级 runner

用标签和执行边界控制任务来源

  1. 注册:确认 runner 归属项目或分组,不把注册信息保存在脚本仓库中。
  2. 执行器:根据构建方式选择本机执行路径,并限制可运行的任务类型。
  3. 标签:要求作业显式匹配标签,避免未审核任务进入签名环境。
  4. 审计:保留作业标识、提交版本和失败阶段,便于支持团队复现。
WORK 工作目录

每个仓库独立,任务结束后移除临时文件,不复用未知来源的检出目录。

CACHE 依赖缓存

按锁文件或工具版本生成缓存键,版本变化时主动失效,不做无条件全量复用。

OUTPUT 构建产物

产物与源码分开保存,上传成功后按团队保留策略清理本地副本。

SECRETS 敏感变量

使用平台密钥机制注入并限制日志输出,不写入项目文件、缓存或归档。

系统升级策略

升级由你安排,先留下可回溯的环境记录

VMOwn 节点全年 365 天正常运行,不设定期停机。系统升级属于用户主动变更,应选择不影响发布与构建的时间段,并在操作前完成工具链兼容验证。

升级前状态记录

系统与硬件
macOS 版本、芯片、统一内存、剩余空间
开发工具
Xcode、命令行工具、SDK、运行时版本
项目依赖
包管理锁文件、Ruby、Python、Node 环境
签名配置
证书状态、描述文件、Keychain 搜索列表
自动化任务
runner 状态、标签、工作目录、最近成功作业
恢复材料
代码备份、配置导出、关键日志、订单标识
变更前

先跑一条基准流水线

在升级前完成一次可重复的构建、测试和归档,记录提交版本与结果。升级后用同一输入复跑,差异才有定位价值。

准备诊断信息
变更失败

停止连续修改并保留现场

记录最后一个成功步骤和第一个失败步骤,不要反复删除全部缓存。将工具版本、错误日志与复现命令整理后提交工单。

提交控制台工单
诊断信息清单

让支持团队能按相同条件复现问题

“连接失败”或“构建报错”不足以开始定位。请提供问题发生的上下文、准确时间、首个错误和最小复现步骤,同时移除日志中的敏感内容。

工单附件核对表 6 REQUIRED FIELDS
01

节点与订单标识

提供新加坡、日本(东京)、韩国(首尔)、香港或美国西部中的实际节点,以及控制台内的订单标识。

02

系统与工具版本

记录 macOS、Xcode、命令行工具和直接相关依赖的版本,不用提交整台设备的软件清单。

03

发生时间与时区

写明问题发生时间、持续时长和时区。连接问题还应注明本地网络所在地与网络类型。

04

首个有效错误

保留错误前后的必要上下文,优先提交首个失败信息,不只截取最后一行退出状态。

05

最小复现步骤

从已知正常状态开始,按顺序写出命令、界面操作、输入和实际结果。

06

已尝试的处理

说明是否重连、重启任务、切换网络、清理局部缓存或回退配置,避免重复操作破坏现场。

仍未解决

带上诊断记录,让支持从首个错误开始排查

售前选型和一般技术问题可通过 support@vmown.com 联系;已有订单的问题优先登录控制台提交工单,以便关联设备、节点和订单记录。