2026年企业Mac CI:Bazel与Gradle远端缓存、repository_cache分区与同机xcodebuild并行

Android 仓多用 Bazel/Gradle 远程构建缓存,iOS 仍以 xcodebuild 为主;混盘易「远端命中高、本地尾延迟炸」。下文:repository_cachedisk_cache 分卷、远端只读压写放大、同机多 Job 与 NVMe 定标。多仓并行 FAQ并行测试 FAQ

一、Bazel 与 Gradle:repository_cache 和 disk_cache 各管什么

Bazelrepository_cache 管依赖镜像,disk/remote 管动作输出;同目录互挤 LRU。Gradle:build cache 与 User Home 依赖层分挂载,对齐 Nexus。高 NVMe 用APFS 子卷隔离随机读与顺序写。

口诀:依赖与产物分桶;远端一半,卷布局一半。

二、远端只读缓存:写入边界

远端只读,上传白名单或专用 uploader;Bazel PR 线可关 upload;Gradle 明确写失败是否阻断。大文件走制品库,不进构建缓存键。

三、同机多 Job 与 xcodebuild:NVMe 并行度

NVMe 好≠Job 线性加。起点 xcodebuild ≤ 核×0.5~0.75,盯 iostat await;await 陡升则减并发或第二块 NVMe 放 DerivedData。Bazel/Gradle 与 xcodebuild 错峰分池优于硬堆。

  • 键前缀含 工具链 + SDK + 仓库;每 Job 独立 -derivedDataPath
  • 磁盘水位告警绑定清理 Runbook 与大版本弃桶。

四、选型落地 FAQ

  • repository_cache 上 NFS?高 QPS 随机读用近端 SSD;NFS 偏冷归档。
  • 只读后仍慢?TMPDIR 与链接临时目录指到 NVMe 子卷。
  • Gradle 暴涨?依赖层长保留、build cache 短保留,盯单键体积异常。

在 Apple Silicon Mac mini 上对齐盘与并发

macOS 上工具链行为一致,减少池化温差;Mac mini NVMe 与统一内存利解压索引,待机约 4W 宜 7×24。Gatekeeper、SIP、FileVault 降无人值守风险。独占对照机见 Macstripe 首页Mac mini M4 仍是 2026 定标多 Job 的起点;await 与 wall time 稳后再放大远端命中。现在租用独占对照 Mac、把并行度写入 Runbook——从首页对比配置即可。