锁定 Xcode 命令行工具
先运行 xcode-select -p 与 xcodebuild -version,确认脚本实际调用的开发者目录和 Xcode 版本。切换版本后重新执行这两项,不依赖终端窗口标题判断。
面向首次使用者、发布工程师和 CI/CD 维护者。输入命令、错误片段或任务名称,先缩小问题范围,再按预期输出逐项核对。
当前显示 8 个操作入口。
每个入口都给出核对对象、命令或观察指标。筛选只改变下方入口,不会隐藏完整操作章节。
从控制台取得连接信息,核对 SSH、图形界面、密码与时区。
确认 Xcode 工具链、签名输入、归档路径和构建产物保存规则。
区分平台注册、节点标签、并发边界和每次任务的工作目录。
按分辨率、色彩、帧率和网络抖动逐层排除交互卡顿。
统一节点、runner、缓存和签名资产的含义,减少协作歧义。
把网络、磁盘、Xcode 与签名问题整理成命令、预期和分支。
提交区域、时间、任务编号与脱敏日志,让支持人员复现路径。
区分可重建缓存、归档结果和必须保留的发布产物。
尝试缩短错误文本,或搜索命令名,例如 xcodebuild、df -h、ping。
连接信息以控制台当前实例详情为准。不要从旧工单、聊天记录或历史脚本复制地址与凭据。
先建立一种稳定连接,再检查密码与时区。不要同时切换网络、分辨率和认证方式,否则难以判断哪个变量造成变化。
核对节点区域、主机地址、端口、用户名和实例状态。凭据只保存在受控密码管理工具中,不放入代码仓库或构建日志。
执行 ssh -v user@host 查看解析、握手和认证阶段。若在建立连接前超时,先检查本地网络与端口;若认证失败,再核对用户名和当前凭据。
需要操作 Xcode 界面时使用 VNC 或屏幕共享。先保持默认分辨率和色彩设置,确认键盘、鼠标及剪贴板行为正常后再调画质。
更换初始密码,运行 date 和 systemsetup -gettimezone 核对时间与时区,并确认项目目录归属当前任务用户。
一次可复现的 iOS 构建,需要固定工具链、项目入口、签名资产、归档参数和导出位置。仅记录“构建失败”不足以复查。
先运行 xcode-select -p 与 xcodebuild -version,确认脚本实际调用的开发者目录和 Xcode 版本。切换版本后重新执行这两项,不依赖终端窗口标题判断。
签名资产应按项目和环境控制访问范围。导入后使用 security find-identity -v -p codesigning 检查可用身份,不把证书密码输出到流水线日志。
脚本应显式指定 workspace 或 project、共享 scheme、configuration 和 -archivePath。构建机上不要依赖上一次 Xcode 图形界面的临时选择。
通过 -exportArchive 和受版本控制的导出配置生成产物。保存归档、导出结果、构建日志及提交标识,失败时也保留可脱敏的诊断信息。
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-configuration Release \
-archivePath "$PWD/output/App.xcarchive" \
clean archive
OakVM 节点是独享物理机、非虚拟机。并发通过增加独享节点扩展;同一节点上的任务仍应明确队列、标签和工作目录边界。
runs-on 精确匹配,不使用含义模糊的通用标签。隔离基线:项目目录、构建缓存、签名资产和产物目录分别管理。不要用清空整台节点作为日常隔离手段,也不要让两个项目共享同一组可写签名目录。
VNC 与屏幕共享的主观卡顿不一定来自节点计算负载。按固定顺序测试,可以区分编码压力、本地网络抖动和后台任务争用。
先把显示分辨率降到当前操作所需的最低档,关闭不使用的额外显示区域。若响应明显改善,问题更可能与画面编码量有关。
暂停视频、动画预览和持续刷新的监控窗口。构建时关闭不必要的模拟器画面,观察静态编辑操作是否恢复稳定。
代码编辑和发布操作通常不需要高帧率。先以输入响应和文字清晰度为目标,再逐步提升画面流畅度。
对节点地址执行连续短时延迟测试,关注波动和丢包,而不只看单次最低值。切换本地网络后使用相同样本数量复测。
同一任务只保留一名主要操作者,其他成员通过构建日志和产物记录协作。多人同时操作图形界面会增加上下文冲突。
以下术语用于 OakVM 页面、控制台与支持沟通。它们描述交付形态和工作流,不代表第三方平台对服务的背书。
先保存原始退出码和首个有效错误,再做修复。连续执行多种清理命令会丢失问题现场,也可能把依赖错误误判成节点故障。
| 检查对象 | 命令或动作 | 预期结果 | 异常分支 |
|---|---|---|---|
| 网络解析与可达性 | ping -c 20 hostssh -v user@host |
地址解析一致;样本无持续丢包;SSH 能进入握手和认证阶段。 | 解析错误时核对地址;连接前超时则更换本地链路复测;认证失败只检查当前用户名与凭据。 |
| 磁盘与构建空间 | df -hdu -sh ~/Library/Developer/Xcode/DerivedData |
目标卷有足够空间保存源码、依赖、归档和导出结果;缓存体积在团队阈值内。 | 先转移必须保留的产物,再按项目删除可重建缓存;不要直接删除无法确认归属的归档目录。 |
| Xcode 工具链 | xcode-select -pxcodebuild -version |
开发者目录和版本与流水线记录一致,命令可正常返回。 | 路径错误时显式切换工具链;版本不符时停止任务,避免生成不可比较的归档结果。 |
| 项目与 scheme | xcodebuild -list -workspace App.xcworkspace |
目标 scheme 可见,并且用于自动化的 scheme 已共享。 | 列表为空时检查工作目录和依赖生成步骤;scheme 不可见时检查项目共享设置与名称大小写。 |
| 签名身份 | security find-identity -v -p codesigning |
当前任务需要的签名身份可见,输出不包含失效或重复选择造成的歧义。 | 身份缺失时检查导入范围、钥匙串访问与描述文件匹配关系;不要把私钥或密码贴入公开页面。 |
| 归档与导出 | 保留 xcodebuild 退出码、归档路径和导出日志。 |
归档目录存在,导出结果与提交标识、任务编号建立对应关系。 | 从日志首个 error 开始排查;分别判断编译、签名、归档和导出阶段,不用最后一行概括整个失败。 |
切换网络后保持画面设置不变;切换 Xcode 后保持源码提交不变。这样才能比较前后结果。
后续报错往往是连锁结果。记录最早出现的错误段、退出码和对应命令。
移除主机凭据、令牌、私钥内容和项目敏感路径,同时保留时间、任务编号和工具版本。
已有用户优先登录控制台提交工单;无法登录时发送邮件至 support@oakvm.com。两种渠道都不要求在公开页面粘贴连接凭据。
新加坡、日本(东京)、韩国(首尔)、香港、美国东部或美国西部。
写明日期、时间和时区,确保节点日志能对齐。
提供订单、实例或 CI 任务中的可识别编号。
列出执行入口、命令和问题出现前的最后一个成功步骤。
分别描述预期输出和实际输出,不只写“无法使用”。
保留错误上下文、退出码和版本,移除凭据、令牌与私钥内容。
选择 OakVM M4 或 OakVM M4 Pro,在六个可选节点区域中配置租期。所有区域全年 365 天正常运行,实际可用性以控制台实时返回为准。