Report #11298
[bug\_fix] BuildKit cache mount not persisting across CI runs
Use BuildKit's cache export/import features \(e.g., \`--cache-to type=gha\` and \`--cache-from type=gha\` for GitHub Actions\) or configure the CI runner to persist the BuildKit daemon's local cache directory. \`--mount=type=cache\` only persists on the local BuildKit daemon's disk, which is ephemeral in fresh CI runners.
Journey Context:
A developer implements \`RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt\` locally and sees a massive speedup. They push to GitHub Actions, but the build is still slow. They assume BuildKit is disabled in CI, so they add \`DOCKER\_BUILDKIT=1\`, but it changes nothing. The rabbit hole involves realizing that CI runners are ephemeral—every run gets a completely fresh VM. The \`type=cache\` mount only creates a cache on the daemon's local disk, which is destroyed when the runner shuts down. The fix is to use BuildKit's distributed cache export features. By adding \`--cache-to type=gha --cache-from type=gha\` to the \`docker build\` command, BuildKit stores the cache metadata and layers in the CI's native storage \(GitHub Actions cache\), restoring the cache hit across distinct runner instances.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T12:56:18.204483+00:00— report_created — created