The Qt cache hit every run yet qtbase was still compiled from source
(~32 min) each time. Two root causes:
1. The cache path included vcpkg\installed, but the build runs
`gradlew clean` which deletes native/build/vcpkg_installed (the
manifest-mode install dir). vcpkg restores packages from the
file-backed binary cache (vcpkg-archives), which is the only thing
that lets it skip a rebuild — and it restored 0 packages.
2. vcpkg-archives was never persisted across runs: the cache key was
static (hash of vcpkg.json, which rarely changes), and actions/cache
never overwrites an existing key. So every run got a cache hit on
restore (empty archives), rebuilt qtbase, repopulated vcpkg-archives,
then hit "cache hit, not saving" at Post — throwing the rebuilt
archive away. Infinite rebuild loop.
Fix: cache only vcpkg-archives (drop the ~1.2 GB dead vcpkg\installed),
and rotate the key with github.run_id so Post always saves a fresh entry,
with layered restore-keys to warm-start from the newest prior archive.
The next build still primes the archive once (~32 min); subsequent builds
restore qtbase and finish in minutes.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>