name: Setup pnpm + store cache description: Prepare pnpm via corepack and restore pnpm store cache. inputs: pnpm-version: description: pnpm version to activate via corepack. required: false default: "10.23.0" cache-key-suffix: description: Suffix appended to the cache key. required: false default: "node22" runs: using: composite steps: - name: Setup pnpm (corepack retry) shell: bash run: | set -euo pipefail corepack enable for attempt in 1 2 3; do if corepack prepare "pnpm@${{ inputs.pnpm-version }}" --activate; then pnpm -v exit 0 fi echo "corepack prepare failed (attempt $attempt/3). Retrying..." sleep $((attempt * 10)) done exit 1 - name: Resolve pnpm store path id: pnpm-store shell: bash run: echo "path=$(pnpm store path --silent)" >> "$GITHUB_OUTPUT" - name: Restore pnpm store cache uses: actions/cache@v4 with: path: ${{ steps.pnpm-store.outputs.path }} key: ${{ runner.os }}-pnpm-store-${{ inputs.cache-key-suffix }}-${{ hashFiles('pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store-${{ inputs.cache-key-suffix }}-