SuperAPI AI 工具集

verify-buildkit-cache

部署与运维

查看项目

更新于 10-15 22:13

技能介绍

用途:仅依据 CI 日志,系统性验证 Docker RUN --mount=type=cache(Go 的 GOMODCACHE 与 GOCACHE)是否跨任务持久化、被 GitHub Actions 恢复、重新注入 BuildKit,并真正加速 go build。

前提:Dockerfile 使用缓存挂载,如 RUN --mount=type=cache,target=/go/pkg/mod 与 RUN --mount=type=cache,target=/root/.cache/go-build;工作流用 actions/cache@v5 持久化主机目录 CACHE_DIR,并用 buildkit-cache-dance 注入/提取缓存挂载;actions/cache@v5 必须在 buildkit-cache-dance 之前运行。

判定标准:三项同时成立才算缓存有效——actions/cache 恢复显示非零缓存大小;Docker 构建日志显示构建前已有较大缓存挂载;go build 耗时显著下降(如 40s 降至数秒)。

检查要点:A. actions/cache 恢复,出现 Cache hit 与数百 MB 的 Cache Size 为通过;显示约 0 MB 或反复提示主键命中但不保存为失败,可提升 cache_version 或把 github.ref_name 纳入键。B. buildkit-cache-dance 注入无错、提取后 CACHE_DIR/<cache-id>/ 有真实数据为通过;提取后目录为空、数据写到别处或 id/target 与 Dockerfile 不匹配为失败,可用绝对路径 cache-dir,并让 cache-map 与 Dockerfile 的 target、id 一致,调试时开启 is_debug=true 查看 Dancefile.inject 与 Dancefile.extract。C. 在构建阶段用 du -sh 与 time go build 观察,第二次及以后运行构建前 /go/pkg/mod 与 /root/.cache/go-build 达数百 MB、构建仅数秒、几乎无 go: downloading 为通过;仍为 8.0K 且每次下载模块为失败。

限制:资料未提供具体安装命令、版本要求或收费信息;该技能面向 Go + Docker + GitHub Actions 场景,其他技术栈暂未提供。