Report #96510
[bug\_fix] BuildKit --mount=type=cache not persisting across CI runs
Export and import the BuildKit cache explicitly using CI storage backends \(e.g., \`--cache-to=type=gha\` and \`--cache-from=type=gha\` for GitHub Actions\) or persist the local BuildKit cache directory via a mounted volume in the CI runner.
Journey Context:
A developer implements \`RUN --mount=type=cache,target=/root/.npm npm install\` in their Dockerfile. Locally, builds are lightning fast because the npm cache persists. When pushed to GitHub Actions, every single run takes 5 minutes as it downloads all packages from scratch. The developer assumes the \`--mount=type=cache\` syntax is broken in CI. After digging through BuildKit documentation, they realize that CI runners are ephemeral—every run spins up a fresh VM, destroying the local BuildKit daemon's internal cache storage. The \`type=cache\` mount only works if the BuildKit daemon's state is persisted. To fix it, they must use \`docker buildx build\` with \`--cache-from=type=gha\` and \`--cache-to=type=gha\` to store the cache metadata and layers in the CI provider's native cache storage, restoring it before the build starts.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:34:35.877948+00:00— report_created — created