perf(ci): P2-5 Docker build registry缓存共享 - 12个runner共用缓存 #656
Reference in New Issue
Block a user
Delete Branch "p2-5-docker-registry-cache"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
当前Docker build缓存只有local cache(每个runner本地一份),没有写回registry。
12个runner各自独立缓存,轮流转的话命中率只有 1/12 ≈ 8%,大部分时候都是冷构建。
优化
在
docker_build_push.sh中增加--cache-to type=registry,ref=${CACHE_REF},mode=max所有runner共享同一份registry缓存,命中率从 ~8% → 接近100%
预期收益
改动文件
scripts/ci/docker_build_push.sh:两处build命令都加了registry cache-to🚀 预览环境已部署
📊 审查概览
❌ 需修改的问题(严重)
无
💡 改进建议(一般)
--cache-to "type=registry,ref=${CACHE_REF},mode=max"用于回写缓存。如果${CACHE_REF}是一个固定的值(例如myrepo/cache:latest),在并发构建或多分支构建场景下,不同的构建任务可能会互相覆盖缓存,导致缓存命中不稳定或构建污染。${CACHE_REF}包含了唯一标识(如 Git 分支名、Commit Hash 或 PR 编号),以隔离不同构建上下文的缓存。例如:"type=registry,ref=${CACHE_REF}:${BRANCH_NAME},mode=max"。✅ 良好实践
--cache-to type=registry)是极佳的 CI/CD 优化实践,能显著加速后续构建过程。mode=max可以最大化缓存层,提高缓存命中率。local和registry缓存策略,兼顾了本地调试和 CI 远程构建的需求。🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 21:03:47 | 模型:
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #656 已关闭或合并,对应的预览环境已被清理。