确认 Xcode 版本
运行 xcodebuild -version,记录主版本和 Build version。若流水线依赖特定版本,应在任务开始处输出版本,而不是只在初次配置时检查。
xcodebuild -version
xcrun --find simctl
swift --version
选择连接、Xcode、CI/CD、存储、网络或续租,页面会保留相关入口。也可以输入命令、现象或工具名称检索。
当前显示全部 6 类帮助入口。
尝试缩短关键词,或清除分类后搜索命令名称。涉及现有订单的问题可直接提交控制台工单。
连接资料以控制台实例详情页显示为准。不要根据旧工单或历史命令猜测主机地址,节点重新交付后应重新复制当前信息。
进入控制台的实例详情,复制主机地址、SSH 用户名、端口与密钥信息。先确认所选订单和节点一致,再把命令放入本地终端。
将密钥文件放在本地用户可控目录,不要提交到 Git 仓库、构建产物或团队聊天记录。文件名可自定义,但后续命令路径必须对应。
macOS 或 Linux 本地终端执行 chmod 600 ~/.ssh/oncemac_key。若 SSH 提示私钥权限过宽,应先修正权限,不要通过关闭安全检查绕过。
执行控制台给出的 SSH 命令。首次连接时核对主机指纹来源;进入节点后运行 hostname、sw_vers 与 whoami,确认主机、系统和当前用户。
一次排查只改变一个变量。先确认 SSH 会话稳定,再读取 Xcode 版本,最后执行带结果包和日志的构建命令。这样能区分连接问题、工具链问题和工程自身问题。
$ ssh -i ~/.ssh/oncemac_key user@host
Last login: current session
connected: once-node
$ xcodebuild -version
Xcode 16.x
Build version 16x
$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ set -o pipefail
$ xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-destination 'generic/platform=iOS' \
-resultBundlePath ./BuildResults.xcresult \
build | tee build.log
** BUILD SUCCEEDED **
$ bundle exec fastlane ios build
[fastlane] resolving dependencies
[fastlane] archive completed
[fastlane] lane finished successfully
“本地能构建、节点不能构建”通常不足以定位原因。应对照同一提交、依赖锁文件、scheme、destination 与环境变量,再比较两端输出。
运行 xcodebuild -version,记录主版本和 Build version。若流水线依赖特定版本,应在任务开始处输出版本,而不是只在初次配置时检查。
xcodebuild -version
xcrun --find simctl
swift --version
运行 xcode-select -p 检查 Command Line Tools 当前路径。若使用多个 Xcode 版本,应在执行器环境中明确 DEVELOPER_DIR,避免交互会话与自动化任务读取不同路径。
xcode-select -p
echo "$DEVELOPER_DIR"
xcrun --sdk iphoneos --show-sdk-path
先确认钥匙串可访问、证书名称与 provisioning profile 条件匹配,再检查工程的 Team、Bundle Identifier 和签名方式。工单只需提供脱敏后的错误段,不要附带证书、私钥或密码。
security list-keychains
security find-identity -v -p codesigning
xcodebuild -showBuildSettings
通过 set -o pipefail 保留真实退出状态,同时用 tee 写入日志。复杂失败建议生成 .xcresult,并在分享前移除用户名、路径、令牌和业务数据。
set -o pipefail
xcodebuild build | tee build.log
echo "${PIPESTATUS[0]}"
OnceMac 提供独享物理节点和完整 macOS 命令行环境。具体平台功能、插件兼容性与任务定义应由团队在自己的仓库和版本条件下验证。
runs-on 条件。whoami、pwd、Xcode 版本和可用磁盘。优先从 Git、锁文件和 Brewfile 重建工具链,只迁移确实需要的工作目录与缓存。整目录复制旧用户环境会把过期配置、绝对路径和敏感凭据一起带入新节点。
先用预演模式检查将要复制和删除的内容,再执行正式同步。目标路径中的删除行为必须由操作者确认。
rsync -avhn \
--exclude '.git' \
--exclude 'DerivedData' \
./Project/ user@host:~/Project/
在源节点记录分支、提交哈希与未提交变更。新节点完成克隆后核对哈希,再恢复依赖,不用压缩包代替版本记录。
git status --short
git rev-parse HEAD
git clone repository-url
git checkout commit-hash
导出前审查列表,移除不再需要的软件。恢复后逐项验证命令版本,不能仅以安装命令退出成功作为环境可用依据。
brew bundle dump --file Brewfile
brew bundle check --file Brewfile
brew bundle install --file Brewfile
SSH 私钥、仓库令牌、签名材料、环境变量文件和服务密钥不应随项目目录批量复制。确认新节点的最小权限后,通过团队认可的安全流程重新配置。
下面五类问题都按“确认现象、运行最小命令、记录结果、停止无效改动”的顺序处理。展开对应项目即可查看检查清单。
chmod 600 检查本地私钥权限,并确认命令中的密钥路径存在。ssh -vvv 获取连接阶段,但提交工单前移除完整地址、用户名和密钥路径中的个人信息。set -o pipefail 保留真实退出码,并导出 .xcresult 或完整日志。df -h 查看卷余量,再用 du -sh 定位工作区、DerivedData、归档与依赖缓存。uptime,核对启动时间与问题发生时间是否一致。现有订单、节点状态和续租问题优先通过控制台工单提交;尚未下单的配置与使用范围问题可发送邮件。对外联系邮箱仅为 support@oncemac.com。
提供订单号、配置名称和节点区域,不要提供付款凭据或完整账单资料。
写明时区、首次发生时间、最后一次复现时间,以及问题是否持续。
列出执行命令、预期结果、实际结果和退出码,避免只写“不能使用”。
保留错误上下文,移除密钥、令牌、密码、完整 IP、签名材料与业务数据。
说明已验证的网络、版本、路径、磁盘和重试结果,避免重复执行无效步骤。
适合节点连接、构建异常、账单、续租与订单状态问题。工单会关联登录账户,便于核对实例上下文。
进入控制台请写明用途、目标节点、Xcode 版本、并发构建数、存储需求与期望启用时间。
support@oncemac.comOnceMac 提供 3 档在售配置与 6 个节点,全年 365 天正常运行。所有订单以美元结算,可在控制台统一管理订单、节点与工单。