确认 Xcode 选择路径
同时记录图形界面的 Xcode 版本与命令行工具路径。存在多个版本时,构建脚本必须显式选择,避免交互会话和 runner 使用不同工具链。
$ xcodebuild -version
$ xcode-select -p
$ xcrun --find swift
从领取连接信息到跑通 Xcode、签名和持续集成,按任务查步骤。每个检查项都对应可观察结果,遇到问题时也能准备一份可复现的诊断记录。
Apple Silicon 物理节点,订单独享一台设备,非虚拟机。首次连接前请先核对节点、系统版本与访问方式。
不必从头阅读。选择当前任务,直接进入对应检查清单。订单、续租和设备状态属于控制台任务,技术配置与错误定位留在本页完成。
首次接入的目标不是立即迁移全部项目,而是确认凭据、网络、图形会话和 SSH 均稳定。基础链路未验证前,不建议开始长时间构建。
核对订单标识、节点、设备名称与访问方式。凭据只保存在受控密码管理工具中,不通过群聊或公开文档转发。
确认本地网络没有拦截所需端口,关闭会改写路由的临时代理,记录当前公网出口与测试时间。先用稳定有线网络验证,再比较无线网络表现。
先使用与本地显示器接近的分辨率,确认文字清晰度、键位映射和双向剪贴板。高分辨率会增加弱网下的画面更新压力,应先保证交互稳定。
主动断开一次会话后重新连接,检查正在运行的命令是否仍在、图形会话是否恢复到原桌面。长任务建议放入可持续的命令会话或 CI/CD 作业中。
只向必要成员分发访问权限,团队成员变更后立即更新凭据。不要在脚本、仓库、构建日志或截图中保存私钥、完整密码和远程控制验证码。
先确认 SSH 会话,再执行 Xcode 构建,最后验证自动化打包工具。示例只展示判断路径,项目名称、scheme、workspace 和导出参数应替换为团队自己的配置。
$ 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
多数签名故障不是单一开关造成的。先固定工具版本,再检查证书与描述文件是否匹配,最后确认自动化进程能够访问所需 Keychain 项。
同时记录图形界面的 Xcode 版本与命令行工具路径。存在多个版本时,构建脚本必须显式选择,避免交互会话和 runner 使用不同工具链。
$ xcodebuild -version
$ xcode-select -p
$ xcrun --find swift
证书、私钥和描述文件必须属于同一签名流程。导入后先检查有效期、团队信息和目标标识,不要直接以正式打包任务作为第一次验证。
图形会话中可用不代表自动化进程可用。应在 runner 对应用户与非交互环境下检查解锁方式、搜索列表和代码签名访问权限。
保留失败命令、目标名称、configuration、导出方式和首个错误行。不要只提交最后一行通用失败提示,它通常缺少真正原因。
| 检查对象 | 需要记录 | 通过标准 | 失败时的下一步 |
|---|---|---|---|
| macOS | 当前版本、可用空间 | 目标 Xcode 明确支持 | 暂停变更并核对兼容矩阵 |
| Xcode | 版本、选择路径、SDK | 命令行与图形界面一致 | 修正工具路径后重跑最小构建 |
| 签名材料 | 证书状态、描述文件、团队 | 目标标识与导出方式匹配 | 重新导入并检查 Keychain 权限 |
| 项目依赖 | 锁文件、运行时、插件版本 | 干净目录可重复安装 | 清理局部缓存并保留失败日志 |
runner 不应直接复用日常开发目录。为仓库、依赖缓存、构建产物和临时文件划分边界,才能避免一次失败任务污染下一次构建。
每个仓库独立,任务结束后移除临时文件,不复用未知来源的检出目录。
按锁文件或工具版本生成缓存键,版本变化时主动失效,不做无条件全量复用。
产物与源码分开保存,上传成功后按团队保留策略清理本地副本。
使用平台密钥机制注入并限制日志输出,不写入项目文件、缓存或归档。
VMOwn 节点全年 365 天正常运行,不设定期停机。系统升级属于用户主动变更,应选择不影响发布与构建的时间段,并在操作前完成工具链兼容验证。
“连接失败”或“构建报错”不足以开始定位。请提供问题发生的上下文、准确时间、首个错误和最小复现步骤,同时移除日志中的敏感内容。
提供新加坡、日本(东京)、韩国(首尔)、香港或美国西部中的实际节点,以及控制台内的订单标识。
记录 macOS、Xcode、命令行工具和直接相关依赖的版本,不用提交整台设备的软件清单。
写明问题发生时间、持续时长和时区。连接问题还应注明本地网络所在地与网络类型。
保留错误前后的必要上下文,优先提交首个失败信息,不只截取最后一行退出状态。
从已知正常状态开始,按顺序写出命令、界面操作、输入和实际结果。
说明是否重连、重启任务、切换网络、清理局部缓存或回退配置,避免重复操作破坏现场。