核对连接借用卡
从控制台读取字段,按连接方式分别填写。
- VNC 桌面
- 地址 · VNC 端口 · 密码
- SSH 构建
- 地址 · SSH 端口 · 用户名 · 密钥
- SFTP 传输
- 沿用 SSH 接入字段
传入工程 → 编译导出 → 下载产物
分配任务
三种方式接入同一台机器,不需要为每项任务另租实例。先决定要做什么,再打开对应客户端。
适合首次检查环境、操作 Xcode 图形界面,以及查看签名设置。客户端显示远端 macOS 桌面,鼠标和键盘操作作用在云端机器上。
开始时先用较低分辨率。确认输入、画面和连接稳定后,再按需要调整显示质量。
图形操作适合执行 Flutter、React Native、Unity 导出工程的编译命令,也适合查看日志。命令在远端运行,不依赖持续传输桌面画面。
普通 SSH 会话断开可能影响前台任务。长构建应使用任务会话工具,或交给已配置的构建执行器。
命令执行适合上传源码、资源包与配置文件,或下载构建日志和 .ipa。SFTP 使用 SSH 接入信息,不要误填 VNC 端口。
首次传入前先清理可重建缓存。证书与私钥单独传输,产物下载后核对文件大小与构建版本。
工程交接设置 Windows
准备兼容 VNC 的客户端,再打开控制台中的实例详情。连接信息以该实例显示的内容为准,不猜地址、不套默认端口。
把实例的连接地址填入客户端的主机栏。地址、用户名与订单编号是不同字段,不要把整段连接说明一起粘贴进去。
客户端若把地址和端口合在一个输入框,先核对它要求的语法;不同客户端对冒号写法的解释可能不同。
使用控制台给出的 VNC 端口。SSH 与 VNC 是两个服务,端口不能互换;有单独端口栏时,把数字填写在该栏。
遇到连接超时,先检查复制时是否带入空格、当前网络是否限制该端口,以及实例是否处于可连接状态。
按客户端提示填写实例对应的 VNC 密码。不要用控制台登录密码代替,也不要将凭据保存到公用电脑。
首次进入桌面后,检查键盘布局与系统时间,再核对 Xcode 和命令行工具版本。发现凭据异常时,通过工单处理。
设置 Linux
SSH 用于执行命令,VNC 客户端用于图形操作。两种方式可以按任务切换,但各自的认证信息要分别核对。
在自己的 Linux 电脑生成 SSH 密钥。私钥只留在本地,公钥才用于配置远端用户的授权文件;不要上传私钥来完成登录配置。
ssh-keygen -t ed25519 -f ~/.ssh/xcodehost
chmod 600 ~/.ssh/xcodehost
通过已授权的会话或桌面完成公钥登记后,再测试密钥登录。验证成功前,不要关闭仍可用的接入方式。
首次 SSH 接入会提示主机指纹。应通过可信渠道核对指纹后接受;如果原有记录发生变化,先确认实例是否重装,不要直接忽略警告。
ssh -i ~/.ssh/xcodehost \
-p "$SSH_PORT" \
"$MAC_USER@$MAC_HOST"
命令中的三个环境变量需先设为控制台提供的 SSH 端口、系统用户名与连接地址。VNC 客户端则填写独立的 VNC 字段。
执行构建
下面是命令与预期输出节选,不是在线执行结果。示例假定项目已生成 Archive,签名配置正确,并已准备好 fastlane 所需的上传授权。
$ ssh -i ~/.ssh/xcodehost -p "$SSH_PORT" "$MAC_USER@$MAC_HOST"
Last login: ...
$ xcodebuild -version
Xcode ...
$ xcodebuild -exportArchive \
-archivePath build/App.xcarchive \
-exportPath build/export \
-exportOptionsPlist ExportOptions.plist
** EXPORT SUCCEEDED **
$ fastlane pilot upload --ipa build/export/App.ipa
Successfully uploaded package to App Store Connect
用 xcodebuild -version 核对当前工具链。Flutter 项目先运行 flutter doctor;React Native 项目核对依赖后执行 pod install;Unity 项目先传入导出的 Xcode 工程。
Archive 成功不等于 .ipa 已导出,导出成功也不等于上传完成。分别保留三个阶段的日志,并下载构建产物;上传验证报错时,从报错阶段排查,不必重新配置远程桌面。
选择接入点
五个节点都可以用于桌面、构建和文件传输。参考区间对应表中的辐射区,不是从任意城市连接的保证值,也不是当前实时测量结果。
| 节点 | 辐射区 | 参考往返区间 | 适合的工作方式 |
|---|---|---|---|
| 新加坡 | 东南亚 | 20~50ms | 区内桌面操作;SSH 构建;工程传输 |
| 东京 | 东亚 | 30~60ms | 区内桌面调试;SSH 构建;产物下载 |
| 首尔 | 东北亚 | 30~50ms | 区内远程桌面;命令行构建;文件交接 |
| 香港 | 华南与东南亚 | 20~40ms | 区内桌面操作;SSH 构建;工程上传 |
| 美国西部 | 北美西岸 | 25~35ms | 区内桌面检查;自动构建;产物传输 |
区间参考,实际以接入网络为准。往返延迟不等于文件吞吐速度,不能据此推算上传耗时或编译耗时。
经常操作 Xcode 界面时,优先考虑操作者所在区域;主要跑无人值守构建时,还要考虑源码与产物的传输路径。实际可用状态以控制台实时返回为准。
排查卡顿
桌面拖动不顺、SSH 无法连接、文件传输缓慢是不同问题。一次只调整一项,并记录调整前后的现象。
先降低远端分辨率和客户端画面质量,关闭不必要的桌面动画。用输入文字、打开菜单等短操作确认变化,不用整段视频播放判断开发桌面的体验。
桌面只是辅助检查时,把编译转到 SSH。保留日志并分阶段执行依赖安装、Archive 与导出;若 SSH 正常而 VNC 卡顿,优先排查画面传输,而不是修改工程。
对照参考表选择接近操作者的节点,同时检查本地无线网络、代理与带宽占用。节点选择发生在下单配置时,不要把更换节点理解为现有工程会自动迁移。
先验证桌面、SSH 和文件传输,再开始正式出包。退租前下载工程与产物,清理证书和密钥;到期不续即停。