面向真实工程流程

把独享云端 Mac 接入构建、测试与远程生产

HexVM 为每笔订单分配独立 Mac mini 物理节点,非虚拟机。团队可以保留现有代码仓库、脚本和发布规则,只把需要 macOS 与 Apple Silicon 的执行阶段迁到云端。

pipeline / macos-arm64 运行中
01

代码仓库

提交触发
02

独享节点

环境校验
03

Xcode

构建与测试
04

制品

归档与上传
执行结果 环境可复现,任务可追踪
按工作负载筛选

先确定哪些任务需要放到云端 Mac

不是所有步骤都必须迁移。选择场景后查看推荐链路、需要准备的输入和上线前验收点,再决定节点数量与执行方式。

适合持续集成

把 macOS Runner 变成可控制的固定执行环境

代码提交后由仓库平台调度 self-hosted runner,在独享节点执行依赖恢复、测试、归档和制品上传。团队自行定义触发规则、并发策略与密钥权限。

查看 iOS CI/CD 链路
输入仓库、构建脚本、证书材料
执行xcodebuild 测试与归档
验收日志、测试结果、可安装制品
iOS CI/CD

从代码提交到制品上传的五段链路

独享物理机适合需要固定 Xcode 版本、稳定缓存目录和明确权限边界的流水线。节点不与其他订单共享计算资源,但仓库权限、签名材料和任务清理仍由团队负责。

  1. 01

    代码提交

    以分支、标签或合并请求触发任务。先在仓库侧限制可触发发布流程的成员,避免普通测试任务获得签名权限。

    验收:触发规则可复现
  2. 02

    Runner 调度

    为 self-hosted runner 设置明确标签,例如芯片架构、Xcode 主版本和用途。单节点并发应根据任务内存峰值与磁盘写入量评估。

    验收:任务只进入目标节点
  3. 03

    构建与测试

    锁定依赖版本,执行单元测试、界面测试或静态检查。失败时保留退出码、测试报告与关键日志,而不是只保存最后一屏输出。

    验收:失败原因可定位
  4. 04

    签名归档

    发布任务临时解锁所需钥匙串,完成后立即关闭访问。证书与描述文件应按项目和环境分开,不在普通构建目录长期明文存放。

    验收:权限范围最小化
  5. 05

    制品上传

    上传归档、测试报告和符号文件,并记录提交哈希、构建编号与工具链版本。成功后清理派生数据中的项目敏感内容。

    验收:制品可追溯
建议把测试与发布拆成不同权限级别。

测试 Runner 无需接触发布证书;只有受保护分支的归档任务才加载签名材料。这样即使普通任务脚本发生错误,也不会扩大凭据暴露范围。

macOS 应用构建

让多分支构建共享规则,而不是共享脏环境

持续运行的节点可以保留经过验证的工具链与下载缓存,但每个任务仍应使用独立工作目录。缓存用于加速,不应成为构建成功的前置条件。

分支隔离

按任务编号创建工作目录,构建结束后回收临时文件。不要让两个并发分支改写同一依赖目录或输出路径。

  • 固定默认分支的发布权限
  • 为临时分支设置清理期限
  • 记录提交哈希与构建参数

依赖缓存

缓存键至少包含依赖锁文件摘要、工具链主版本和架构。命中异常时能够一键绕过缓存完成干净构建。

  • 区分下载缓存与构建产物
  • 设置容量阈值和回收顺序
  • 定期执行无缓存基线任务

发布制品

把测试结果、公证准备材料、安装包和符号文件分别保存。制品名称应包含版本、构建号和提交标识。

  • 构建后执行完整性校验
  • 限制发布目录写入成员
  • 保留生成工具链版本记录
build-check.sh
xcodebuild -version
xcode-select -p
swift --version
git rev-parse --short HEAD
xcodebuild test -scheme "Project" -destination "platform=macOS"

把版本确认放在每次构建日志开头。出现环境漂移时,先比较工具链路径、项目提交和依赖锁文件,再判断是否需要清理缓存。

AI 模型实验

验证 Apple Silicon 上的推理兼容性与持续任务

云端 Mac 适合复现实验环境、检查工具链兼容性和运行可恢复的批处理任务。硬件能力以两档在售配置为边界,不把实验结果外推到未列出的规格。

固定输入基线

保存模型版本、样本摘要、随机种子和运行参数。比较输出时使用同一组输入,不以单次运行替代完整验证。

记录环境版本

锁定运行时、依赖包和模型转换工具版本。升级前先复制环境并执行回归样本,确认输出与资源占用变化。

设计恢复点

持续任务按批次写入进度与结果,进程退出后从已确认批次继续。不要把尚未持久化的内存状态当作唯一进度来源。

观测资源边界

记录内存峰值、磁盘增长、任务耗时和失败样本。达到机型资源边界时,优先调整批量大小或队列方式。

从本地环境平滑迁移

三阶段迁移路径:数据、工具链、CI 接入

先复制,再验证,最后切换。保留本地回退路径,直到云端节点连续通过构建、权限和制品验收。

01

阶段一

迁移必要数据

优先通过代码仓库、制品存储和加密传输复制项目数据。排除缓存、临时构建目录、历史日志和不再使用的凭据。

验证清单

  • 仓库分支与子模块完整
  • 大文件摘要与本地一致
  • 敏感配置未写入仓库
  • 旧节点数据仍可回退
02

阶段二

复刻工具链

记录本地 Xcode 版本、命令行工具路径、包管理器锁文件、环境变量来源和构建脚本入口,在云端逐项复刻。

验证清单

  • 工具版本与路径已记录
  • 干净环境可恢复依赖
  • 测试集结果符合基线
  • 缓存删除后仍能构建
03

阶段三

接入 CI 调度

先接入非发布分支,确认调度标签、超时、日志和清理规则,再开放受保护分支与签名归档任务。

验证清单

  • Runner 标签没有歧义
  • 失败任务能够自动回收
  • 发布权限仅限授权流程
  • 制品与日志可以追溯
切换门槛

至少完成一次干净构建、一次失败恢复、一次权限验证和一次制品回溯,再把云端节点设为主要执行环境。

证书与上架流程

把敏感权限限定在需要它的步骤

HexVM 提供独享物理节点与远程访问能力。证书申请、描述文件维护、钥匙串权限、发布授权和最终提交均由客户团队管理。

流程阶段 团队负责 节点执行 验收记录
证书准备

确定证书用途、保管导出密码、限制可访问成员。

在受控会话中导入所需材料,不长期开放钥匙串。

证书名称、有效状态、授权成员。

描述文件

按应用标识与发布环境维护文件,移除失效版本。

在构建前校验匹配关系,失败时停止归档。

应用标识、团队信息、文件版本。

签名归档

批准受保护分支与发布任务,控制构建参数。

执行归档、导出与完整性检查,输出明确退出码。

提交哈希、构建号、归档摘要。

提交上架

复核版本信息、隐私材料、截图与发布范围。

准备经过验证的制品和上传工具环境。

提交人、制品版本、提交结果。

钥匙串权限

仅在签名阶段解锁,任务结束后立即关闭。不同项目或环境使用独立访问策略,避免测试任务继承发布权限。

归档验证

检查应用标识、签名身份、版本号、构建号和导出结果。任何字段不符合预期时停止上传,不用人工忽略错误继续执行。

节点释放前

撤销 Runner 注册,移除证书与描述文件,清理仓库凭据、构建目录和日志中的敏感字段,并确认必要制品已经转存。

上线前检查

团队落地清单

以下六项都应有明确负责人和验收记录。任何一项仍依赖口头约定,都可能在构建失败、成员变更或节点释放时形成风险。

01

区域选择

根据开发者位置、仓库数据路径和制品上传方向选择区域。当前在售区域为新加坡、日本(东京)、韩国(首尔)、香港、美国东部、美国西部,共 6 个区域。

  • 测试团队到节点的连接质量
  • 记录主要数据传输方向
  • 确认区域符合团队内部要求
02

机型选择

先用实际项目执行完整构建,再根据内存峰值、磁盘增长和并发方式选择 HexVM M4 或 HexVM M4 Pro。

  • 记录干净构建耗时
  • 检查依赖与制品占用空间
  • 避免用单次增量构建做容量判断
03

账号权限

区分节点管理、日常开发、CI 执行和发布权限。成员离开团队或职责变化时,应立即回收密钥与仓库授权。

  • 建立授权成员清单
  • 测试与发布权限分离
  • 制定凭据轮换流程
04

仓库接入

使用范围受限的部署凭据或 Runner 授权,只开放任务所需仓库。脚本不得把令牌、私钥或完整凭据写入日志。

  • 限制仓库和分支范围
  • 对敏感输出执行脱敏
  • 验证撤销凭据后的行为
05

监控与恢复

记录任务队列、成功率、失败原因、磁盘占用和执行时长。持续任务要保存恢复点,构建失败后能够安全重试。

  • 定义失败告警接收人
  • 设置磁盘容量阈值
  • 定期验证恢复步骤
06

成本复盘

按节点统计有效构建时长、排队等待、空闲时段和缓存收益。短期任务可按天或周安排,持续流水线可比较月与季周期。

  • 区分执行时间与等待时间
  • 复盘失败重试造成的消耗
  • 按项目分配节点使用记录
先运行基线任务,再决定长期配置。

使用真实仓库完成干净构建、增量构建、测试、归档和制品上传。若需要支持人员协助定位,请准备节点 ID、区域、发生时间、复现步骤和脱敏日志。

开始部署

选择适合现有流水线的独享 Mac

比较两档在售机型与租期,完成区域和附加项配置后即可下单。所有费用均以美元(USD)结算,实际可用性以控制台实时返回为准。