You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ARM64 builds never hit GHA cache despite correct scope configuration #251
ARM64 builds using docker/github-builder with GHA cache never retrieve cached layers, while AMD64 builds hit cache consistently (15+ CACHED layers). Both architectures use identical cache configuration and scopes, but only AMD64 benefits from caching.
Expected behaviour
Both ARM64 and AMD64 builds should retrieve cached layers from the GHA cache backend using their respective architecture-scoped entries. Expected: ARM64 build time ~40s (with cache), similar to AMD64.
Actual behaviour
ARM64 builds show 0 CACHED layers and take ~80s, while AMD64 builds show 15+ CACHED layers in ~39s, despite:
Identical cache: true and cache-mode: max configuration
Correct automatic scope assignment: buildkit-linux-amd64 vs buildkit-linux-arm64
Both builds happening in same workflow run with native runners
Cache export successfully completing on ARM64 (logs show #27 exporting to GitHub Actions Cache)
This pattern is consistent across multiple release builds.
Why not use shared cache scope?
Architecture-specific binaries are incompatible. Both images use CGO_ENABLED=0 to produce static Linux binaries, which are architecture-dependent. Sharing a cache scope across architectures would cause:
Cache hits serving wrong architecture binary
Build failures or runtime crashes
Data corruption
Impact:
ARM64 release builds take ~2x longer (~80s vs ~39s AMD64)
Only affects release tag builds (not PR/main branch), so CI/CD cost is moderate
Not a blocking issue, but significant performance regression for multi-arch releases
Reproducibility:
This should be reproducible with:
Any Go + Alpine project using docker/github-builder@v1.13.0
Activity