PROJECT / 工程实践
分布式增量构建缓存
先判断哪些结果可以复用,再把复用能力延伸到不同节点。
项目目标
增量构建的价值来自跳过已经完成且仍有效的工作。华为 CloudBuild 时期基于 Bazel、BuildBarn、ccache 处理分布式增量构建缓存,并优化 CMake、Maven 构建链路;后续基础设施实践将同一思路延续到 BuildKit registry 远程缓存。两段实践具有共同目标,但不是同一套系统。
组件与架构
历史编译链路使用 Bazel、BuildBarn 与 ccache;后续镜像构建链路使用 BuildKit registry cache。架构图抽象共同的输入、复用判断和结果关系,刻意不将两套工具画成已经串接的生产流水线。
关键流程
先明确构建输入与可复用产物,再观察命中与未命中时的实际工作量。对后续 BuildKit 实践,采用不同 daemon 之间 export、import 的方式确认远程复用;对历史编译实践,仅陈述已记录的技术与优化职责。
工程取舍
缓存的存在不等于缓存正确,更不等于交付必然加速。工程重点是把可复用的边界解释清楚,使结果可以跨节点使用,并具备回读与回滚意识。不同构建工具的粒度、输入与产物不同,因此不把某一链路的结果直接套用到另一链路。
成果与证据口径
2026-09-09 素材与既有履历记录了历史编译工具和后续远程缓存实践。跨 daemon 全层 CACHED 属于 2026-08-25 的 BuildKit 验收结果;本页没有独立新增命中率或加速百分比,也不把超大仓项目的历史收益视为所有增量缓存场景的通用指标。