From 76b2942db1453d98366ac5a8c93707047e505c7c Mon Sep 17 00:00:00 2001 From: Josh Knapp Date: Mon, 7 Sep 2026 10:47:56 -0700 Subject: [PATCH] ci: bump the OBS deps cache key -- it was stuck on a permanently bad entry actions/cache never overwrites an existing key: once a key has a saved entry, later jobs' save steps are always skipped as a no-op regardless of cache hit/miss. The very first job to ever populate this cache did so before the "Drop non-relocatable OBS build tree" cleanup step existed, so that entry included the bad, path-baked build_x86 directory -- and every run since has kept restoring that same bad entry, not self-healing after "one more transitional run" the way it looked when this was last checked. Confirmed live: a run just now hit the identical stale-path CMakeCache.txt error against the same original job hash (f72837d12c75c64a) from hours ago. Bumping the key (obs-deps- -> obs-deps-v2-) is what actually forces a fresh save under the cleanup step's watch, since the key content (buildspec files) hasn't changed and nothing else would invalidate it. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01RL8abRmgFXkVASHkkqiJbE --- .gitea/workflows/build.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 1c990d5..585d8b4 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -80,7 +80,7 @@ jobs: uses: actions/cache@v4 with: path: .deps - key: obs-deps-${{ runner.os }}-${{ hashFiles('cmake/macos/buildspec.cmake', 'cmake/common/buildspec_common.cmake', 'buildspec.json') }} + key: obs-deps-v2-${{ runner.os }}-${{ hashFiles('cmake/macos/buildspec.cmake', 'cmake/common/buildspec_common.cmake', 'buildspec.json') }} - name: Configure, build, test, verify run: .gitea/scripts/macos-build.sh @@ -147,10 +147,22 @@ jobs: # needed: cmake/windows/buildspec.cmake's own download logic is # already idempotent, it just never gets the chance because .deps/ # lives inside the checkout and is wiped by every fresh clone. + # + # The `v2` in the key: actions/cache never overwrites an existing + # key -- once a key has a saved entry, every later job's save step is + # skipped as a no-op, cache hit or not. The very first job ever + # to populate this cache did so BEFORE the "Drop non-relocatable OBS + # build tree" step below existed, so its save included the bad + # build_x86 directory -- and because saves under an existing key are + # permanently skipped, every run after that kept restoring that same + # bad entry forever, not "one more transitional run" as it looked at + # the time. Bumping the key is what actually forces a fresh save; + # bump it again (v3, ...) if this cache is ever found to be stale in + # a way a workflow change alone can't fix. uses: actions/cache@v4 with: path: .deps - key: obs-deps-${{ runner.os }}-${{ hashFiles('cmake/windows/buildspec.cmake', 'cmake/common/buildspec_common.cmake', 'buildspec.json') }} + key: obs-deps-v2-${{ runner.os }}-${{ hashFiles('cmake/windows/buildspec.cmake', 'cmake/common/buildspec_common.cmake', 'buildspec.json') }} - name: Configure, build, test, verify # Windows PowerShell (powershell.exe), not PowerShell Core (pwsh) --