新加坡
东南亚成员为主时优先评估。把常用远程连接网络与依赖下载同时纳入试跑。
协作时区:UTC+8
注册、配置、支付、分配各预留约 1 分钟,顺利时约 4 分钟走完开通流程。以下是操作预算,不是固定交付时限;邮件接收、支付确认与系统分配进度以控制台实际显示为准。
准备可收取验证码的团队邮箱,按页面提示完成注册并设置密码。使用持续有人管理的邮箱,便于后续查订单、续费和跟进工单;不要把验证码转发到公开的构建日志。
选择 Push M4 S 或 Push M4 L,再选计费周期及节点。单 App 日常 CI 可先评估 16GB 档,多 target 并行 archive 可评估 24GB 档;实际可用状态以控制台实时返回为准。
选择 USDT-TRC20,或使用 Visa / Mastercard / Amex,经 Stripe 处理。以结账页返回的可用网关为准;链上转账需核对网络、地址与金额,等待控制台确认,不把已发起支付当作已开通。
系统分配整机后,在订单或实例详情核对节点、连接地址、端口和登录用户,领取 SSH/VNC 凭据。后续工单保留订单编号即可,不需要提供登录密码或私钥。
5 个节点均提供两档整机。先按日常操作构建机的成员位置缩小范围,再检查仓库、依赖源与产物存储之间的传输路径。时区方便交接,不等于网络延迟;VNC 操作与依赖下载应分别验证。
东南亚成员为主时优先评估。把常用远程连接网络与依赖下载同时纳入试跑。
协作时区:UTC+8
以日本工作日为主的团队可先评估。固定 runner 标签,避免任务误投到其他节点。
协作时区:UTC+9
韩国成员频繁操作桌面时可先评估。用实际办公网络检查图形界面响应。
协作时区:UTC+9
面向华南与东南亚协作路径评估。远程桌面与 SSH 分工,日志留在构建系统。
协作时区:UTC+8
北美白天需要交互操作时优先评估。跨区交接统一用 UTC 记录任务时间。
协作时区:UTC−5 / UTC−4
美国东部有季节性时差。若两地都需要频繁操作,可分别租用就近节点,再用 CI 队列协调任务;同一台整机的多个重任务仍需安排并发上限。
连接地址、端口与用户都取自控制台,不套用其他订单的凭据。下面命令会提示你输入实际值;执行前先确认本机已具备 SSH 客户端。
在本地终端执行。首次连接核对主机指纹;若控制台未提供可核验信息,先通过工单确认,不直接忽略主机身份检查。
printf '连接地址:'
read -r MAC_HOST
printf 'SSH 端口:'
read -r MAC_PORT
printf '登录用户:'
read -r MAC_USER
ssh -p "$MAC_PORT" "$MAC_USER@$MAC_HOST"
登录后运行 whoami 和 sw_vers,确认用户及系统信息。后续配置 SSH 密钥时只上传公钥;私钥保留在你的设备或 CI 密钥管理中。
桌面用于处理图形界面授权,命令行用于执行可复现脚本。连接超时先核对端口、实例状态与本地网络,再提交工单;不要把反复修改密码当作网络排查。
首次构建分为工具链、项目、签名、导出四项检查。命令示例适用于使用 workspace 的 iOS 项目;纯 project 项目应将 -workspace 改为 -project,并使用项目自己的文件名。
先看系统实际选中的 Xcode,而不是只看应用目录里安装了什么。多版本并存时,用项目约定的应用路径切换;切换后再次检查版本和 SDK。
xcode-select -p
xcodebuild -version
xcodebuild -showsdks
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
输入有读取权限的仓库地址,使用 SSH 密钥或安全的凭据管理方式认证,不把访问令牌拼进命令。先执行项目约定的依赖准备,再列出 workspace 与 scheme。
printf '仓库地址:'
read -r REPOSITORY_URL
git clone "$REPOSITORY_URL" app
cd app
git rev-parse HEAD
find . -name '*.xcworkspace' -prune
xcodebuild -list -workspace MyApp.xcworkspace
将 MyApp.xcworkspace 与 MyApp 替换为上一项确认的真实名称。需要设备签名的构建,先安全导入匹配的证书与描述文件,并确认钥匙串可被构建进程访问。
mkdir -p build
xcodebuild \
-workspace MyApp.xcworkspace \
-scheme MyApp \
-configuration Release \
-destination 'generic/platform=iOS' \
-derivedDataPath build/DerivedData \
-archivePath build/MyApp.xcarchive \
archive
ExportOptions.plist 应来自项目既定的签名与分发配置,不能从其他团队照搬。archive 成功不代表导出成功;分别保留两个阶段的退出状态与日志。
xcodebuild -exportArchive \
-archivePath build/MyApp.xcarchive \
-exportPath build/export \
-exportOptionsPlist ExportOptions.plist
test -d build/MyApp.xcarchive
find build/export -maxdepth 1 -type f -print
记录提交 SHA、Xcode 版本、实际 scheme 与产物路径。首次失败先看第一个报错:依赖解析失败查网络与版本锁定,签名失败查证书和描述文件,导出失败查导出配置。不要在一次重试中同时改节点、工具链与签名设置。
先在同一个构建用户下手动跑通,再注册自托管 runner。持续在线解决的是机器供电与托管问题;runner 进程是否自启、证书是否有效、任务是否被队列阻塞,仍需团队配置和检查。
从所用 CI 平台的项目或组织设置中获取 macOS ARM64 runner 安装指令。注册信息取自当前项目,不复用失效令牌;标签同时表达节点、架构与用途。
第一次接入先只开一个构建任务。观察内存、磁盘与耗时,再决定并发;不要因为整机独享就把所有 archive 同时启动。
GitHub Actions runner 解压并完成注册后,可在其安装目录使用随包提供的服务脚本。以下不是下载或注册命令;须先按 CI 平台指令完成前一步。
./svc.sh install
./svc.sh start
./svc.sh status
确认服务脚本显示运行中,并在 CI 平台看到 runner 在线。若使用 LaunchAgent,通常依赖该用户登录会话;需要无人值守启动时,按 runner 官方支持方式配置并验证,不把“已安装服务”等同于“重启后一定可构建”。
关闭手动启动 runner 的终端,从 CI 发起一次受控任务。核对运行用户、所选 Xcode、钥匙串访问、缓存目录和产物上传。对计划用于无人值守的节点,再验证恢复后的 runner 状态;涉及重启时先确认没有其他任务运行。
独享整机可保留 DerivedData 与依赖缓存。缓存键至少区分工具链、依赖锁文件与构建配置;保留产物前设置清理规则,避免缓存增长占满系统磁盘。