ci: pin pnpm store path across runner fleets (#6414)

* ci: pin pnpm store path across runner fleets

Nexu ARC resolved the store under _work while hosted/seed used the home
store, so actions/cache version hashes diverged and every Nexu job missed.
Force $HOME/.pnpm-store and add restore-keys prefix fallback.

* test(e2e): lock stable pnpm store path and restore-keys

Add regression assertions for the non-persistent home store pin and
OS-prefix restore-keys so the cross-fleet cache contract cannot regress
silently.

Generated-By: looper 0.11.8 (runner=fixer, agent=grok-build)

* ci: seed Linux pnpm cache from cache-maintenance

Pinning the store path alone cannot hit until a main job saves under the
new actions/cache version. Add a single ubuntu-24.04 seed job; the cache
is repo-scoped so every Nexu size reuses it.
This commit is contained in:
Marc Chan
2026-08-05 07:49:49 +00:00
committed by GitHub
parent 125f3739ea
commit 8082a8d0d6
3 changed files with 75 additions and 10 deletions
@@ -47,7 +47,17 @@ runs:
echo "enabled=true" >> "$GITHUB_OUTPUT"
echo "path=$store_dir" >> "$GITHUB_OUTPUT"
else
# Force a stable home store path so actions/cache version hashes match
# across fleets (hosted vs Nexu ARC). ARC may copy instead of hardlink;
# that is acceptable for cache hit stability.
store_dir="$HOME/.pnpm-store"
mkdir -p "$store_dir"
{
echo "NPM_CONFIG_STORE_DIR=$store_dir"
echo "npm_config_store_dir=$store_dir"
} >> "$GITHUB_ENV"
echo "enabled=false" >> "$GITHUB_OUTPUT"
echo "path=$store_dir" >> "$GITHUB_OUTPUT"
fi
- name: Setup pnpm
@@ -73,6 +83,8 @@ runs:
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: pnpm-store-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
pnpm-store-${{ runner.os }}-
- name: Install dependencies
shell: bash