开机与交付
付款后在哪里看进度、凭据在哪里取、状态与连接信息如何核对。
检查交付流程付款、订单处理、机器交付是不同环节。支付完成后先查看订单,不要仅凭付款页判断机器已经可以连接。
进入控制台核对订单号、机型、租期和付款状态。链上转账或银行卡付款已提交,不等于订单状态已完成更新。
打开对应订单或实例详情,查看当前处理进度。具体交付时间与实际可用状态以控制台实时返回为准。
交付后在实例详情查看主机地址、用户名、SSH 端口及首次登录信息。按该实例显示的字段连接,不套用其他订单的参数。
先确认你查看的是本次付款对应的订单,再核对控制台中的付款状态。若支付已确认但实例仍在处理,把订单号、付款方式、支付凭证编号和当前状态写进工单,支持人员可据此核查交付环节。
USDT-TRC20 付款请保留交易哈希;银行卡付款请保留付款记录编号。不要发送完整卡号、安全码或控制台密码,也不要为同一笔付款反复创建新订单。
连接超时:先检查实例是否已交付并处于可连接状态,再逐字核对主机地址和端口,检查本地网络、代理及访问规则。超时发生在认证之前,重复更换公钥通常解决不了网络路径问题。
Permission denied (publickey):检查用户名、所用私钥以及控制台登记的公钥是否对应。上传的是公钥文件内容;私钥留在本地,不发给支持人员。下面的 HOST、PORT、USER 替换为实例详情中的实际值。
ssh -vv -o IdentitiesOnly=yes \
-i ~/.ssh/id_ed25519 \
-p PORT USER@HOST
提交诊断输出前删去主机地址、个人路径等敏感字段;保留错误类型与认证阶段。主机指纹发生变化时,先核对是否刚做过系统重装,不要直接跳过指纹校验。
先核对实例详情中的桌面连接信息,确认使用的是同一台机器。远程桌面与 SSH 属于不同连接通道,SSH 成功只能说明 SSH 路径可达。
按连接说明核对桌面服务、访问端口和隧道目标;遇到黑屏时记录客户端提示与发生步骤,再尝试降低分辨率或画质,区分显示问题与认证失败。涉及重启时,先停止正在执行的归档或测试任务。
连接配置与迁移顺序见 SSH 与远程连接说明。桌面入口从登录后的实例详情进入。
先保留失败现场,再检查 Xcode、Scheme、依赖和目标平台。日志最后的失败汇总只是结果,第一条编译或签名错误才是入口。
先记录当前提交、构建命令与 Xcode 版本,确认 Scheme 存在且用于归档。命令行任务还要检查所选开发工具目录,避免桌面里打开一个版本、CI 实际调用另一个版本。
xcode-select -p
xcodebuild -version
xcodebuild -list -workspace App.xcworkspace
将 App.xcworkspace 和 App 替换为项目实际名称。使用 workspace 的项目不要误传 project;依赖未恢复、共享 Scheme 未提交、部署目标与 SDK 不匹配,都可能在归档前就失败。
set -o pipefail
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-destination 'generic/platform=iOS' \
-archivePath "$PWD/output/App.xcarchive" \
archive 2>&1 | tee archive.log
这一步产出的是 .xcarchive,不是可分发的 IPA。归档成功、导出失败时,转到签名与描述文件检查,不要重新处理所有编译依赖。
切换工具链后出现模块缓存不兼容、生成文件不一致,或同一提交在干净环境可过、旧缓存不可过时,再验证缓存因素。先停止该项目的构建,保存日志,不要把整个用户目录当作清理目标。
更稳妥的验证方法是给本次构建指定一个新的项目专属目录。旧目录保留,便于回看;如果新目录仍失败,应继续追查源码、依赖或配置,而不是重复清缓存。
xcodebuild \
-workspace App.xcworkspace \
-scheme App \
-derivedDataPath "$PWD/.build/DerivedData-check" \
-destination 'generic/platform=iOS' \
build
构建恢复后再按项目清理确认不再需要的旧目录。源码、签名文件、归档产物和 DerivedData 分开存放,能减少误删风险。
先确认任务到底是设备归档还是模拟器测试。设备 archive 使用 iOS 设备目标;模拟器测试需要当前 Xcode 支持的运行时与设备。不要用模拟器目标替代分发归档目标。
xcrun simctl list runtimes
xcrun simctl list devices available
xcodebuild -showdestinations \
-workspace App.xcworkspace -scheme App
缺少运行时时,在 Xcode 设置中安装对应平台组件;支持该命令的 Xcode 版本也可使用下方方式下载 iOS 平台组件。先检查可用磁盘空间,并保证命令行选中的 Xcode 是准备使用的版本。
xcodebuild -downloadPlatform iOS
安装后重新列出 destinations,再把真实可用的目标写入 CI。不要长期沿用另一台机器的模拟器设备标识。
.p12 提供证书与私钥,描述文件约束应用与能力,API Key 用于授权相关接口。三者不能互相替代。
通过安全通道把 .p12 送到机器,导入用于构建的钥匙串,并确认文件包含配对的私钥。只有证书、没有私钥,不能完成代码签名。导入密码通过 CI 的秘密变量提供,不写进仓库、命令脚本或工单。
security find-identity -v -p codesigning
在实际运行 runner 的用户环境中执行检查。桌面用户能看到证书,不代表另一个服务用户也能看到。还要核对钥匙串是否已解锁、是否在该用户的搜索列表中,以及签名进程的访问权限。
给构建使用独立钥匙串,任务结束后按流程锁定。若需要协助,只提供经过脱敏的身份检查结果和错误文本,不发送 .p12、私钥或导入密码。
对齐四项:Bundle ID、Team ID、导出用途和 entitlements。含扩展的应用,每个需要签名的 Target 都要有对应配置;主应用匹配不代表扩展也匹配。
继续核对描述文件是否有效、是否包含正在使用的证书,以及导出选项中的签名方式是否与项目一致。开发测试与发布分发使用的配置不同,不要仅凭相似的文件名选择。
保留导出阶段日志与 ExportOptions.plist 的脱敏副本。提交工单时写明失败发生在 archive 还是 exportArchive,这能直接缩小排查范围。
将 .p8 文件保存在访问受限的目录,由 CI 秘密变量提供 Key ID、Issuer ID 与文件路径。使用满足上传或自动化任务所需的权限,避免把密钥内容直接写进 lane 或提交到仓库。
API Key 可用于支持该认证方式的上传与管理流程,但不能替代本地代码签名所需的证书私钥。上传 TestFlight 失败时,先区分本地产物签名错误与接口认证、应用权限或版本信息错误。
轮换密钥后同步更新 runner 配置,并移除旧引用。需要支持时提供脱敏错误码与执行阶段,不发送 .p8 文件。
确认签名仓库的读取权限、解密口令、分发类型、应用标识与团队配置。日常 CI 优先只读拉取已经准备好的签名资产,避免每次执行都尝试创建或修改证书。
lane :prepare_signing do
match(
type: "appstore",
readonly: true,
app_identifier: ENV.fetch("APP_IDENTIFIER"),
team_id: ENV.fetch("TEAM_ID")
)
end
仓库访问凭据与解密口令分别管理。出现读取失败,先查仓库认证;解密失败,查口令;安装成功但签名失败,再查钥匙串与描述文件。不要把三类故障合并成“match 不工作”。
日、周、月、季分别定价,不把日价直接乘成其他周期。两档机型均为独享物理机、非虚拟机;实际订单金额以结账明细为准。
| 机型与配置 | 天 | 周 | 月 | 季 |
|---|---|---|---|---|
| OSXBuild Bake M4 M4 / 16GB / 256GB | $20.1 | $54.2 | $100.3 | $272.8 |
| OSXBuild Bake M4 Pro M4 Pro / 64GB / 2TB | $60.3 | $162.9 | $301.6 | $820.4 |
按预计占用机器的连续时间选周期,再核对相同周期的机型价和附加项。周期开始、结束的准确时间以订单显示为准,不能把“月”简单理解成某个自然月剩余天数。
附加 SSD 与 Thunderbolt 5 并联各有四周期目录价。先在配置器选好需要的项目,再查看结账明细;不要只看基础机型价格就判断最终账单。完整目录与选型建议见 租用方案与附加选项。
登录控制台,进入对应订阅或订单,查看到期时间、可用续费操作及账单。完成支付后再次确认新到期时间;不要把支付页面打开或付款提交当作续费已经生效。
是否启用自动续费、是否存在待付账单,以该订单中的设置和状态为准。需要继续使用的机器,提前完成续费并核对结果。需要结束租用的机器,提前导出源码、产物及必要配置。
租期结束后机器进入回收流程,磁盘安全擦除并重装系统。不要将节点当作唯一备份,也不要依赖到期后再取回本地文件。
仅支持 USDT-TRC20 与 Visa / Mastercard / Amex(经 Stripe),全部以美元(USD)结算。实际可用网关以后端接口返回为准。
USDT-TRC20 付款时逐项核对结账页面的网络、收款地址与金额,不沿用旧订单的付款信息。银行卡付款按网关提示完成验证,再返回控制台确认状态。
付款异常请提供订单号、所选渠道、脱敏提示及交易编号。信用卡处理由 Stripe 完成,工单与邮件均不需要完整卡号或安全码。
能复现的步骤,比一句“打包失败”更有用。涉及正在运行的任务时,先保存现场,再做重启或配置变更。
先停止构建和测试,保存日志与未提交文件,再重启机器。记录重启前后现象;若当前任务不宜中断,在工单中注明尚未重启及原因。
对照当前实例信息核对主机、用户名、端口与密钥配对。提供具体错误文本,不上传私钥,也不发送首次登录密码。
附上末尾 50 行及第一条相关错误的上下文,注明命令、Xcode 版本与提交标识。日志较长时通过控制台工单提供附件,并先去除令牌和签名秘密。
写清订单号、节点、问题发生时间与时区、预期结果和实际结果。补充最近一次正常运行的情况,避免支持人员反复确认基础信息。
提取日志末尾,不会改动构建产物:
tail -n 50 archive.log
证书私钥、.p12 密码、.p8 文件、访问令牌与控制台密码,都不应出现在支持材料中。
已有订单或机器故障,登录控制台提交工单。售前咨询、无法登录或需要补充联系信息,发送邮件至 support@osxbuild.com。
支持按亚太与美西时区衔接处理。具体回复进度通过工单记录或邮件跟进;提交时写明你的时区与可配合排查的时间段,在原工单中补充新结果。
联系页说明了不同咨询应准备的信息。机器全年 365 天正常运行,工单回复时段与节点运行时间是两回事。