mirror of
https://github.com/morluto/rea.git
synced 2026-11-11 01:13:39 +00:00
* fix(ci): restore inherited validation failures * perf(ci): share trusted caches and fail fast on PR test failures * fix(ci): bound static cache and hash vitest config for knip - Bound the rolling .turbo/cache snapshot with 7d/500MB eviction so each trusted main save cannot accumulate history toward the GitHub limit. - Hash vitest.config.ts in knip inputs so removing the CiTestSequencer import invalidates the cached passing check. - Cover both in cache-policy and task-hash regressions.
43 lines
1.8 KiB
YAML
43 lines
1.8 KiB
YAML
name: Cache npm package downloads
|
|
description: Restore npm's download cache and save it only from trusted default-branch events.
|
|
outputs:
|
|
can-save:
|
|
description: Whether this run may update the shared npm download cache.
|
|
value: ${{ steps.context.outputs.can-save }}
|
|
path:
|
|
description: The npm download-cache directory.
|
|
value: ${{ steps.context.outputs.path }}
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- id: context
|
|
shell: bash
|
|
env:
|
|
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
|
LOCKFILES_HASH: ${{ hashFiles('package-lock.json', 'npm-shrinkwrap.json', '.npmrc') }}
|
|
run: |
|
|
cache_path="$(npm config get cache)"
|
|
runtime_arch="$(node -p 'process.arch')"
|
|
can_save=false
|
|
if [[ -n "${DEFAULT_BRANCH}" && "${GITHUB_REF}" == "refs/heads/${DEFAULT_BRANCH}" && ( "${GITHUB_EVENT_NAME}" == "push" || "${GITHUB_EVENT_NAME}" == "schedule" || "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ) ]]; then
|
|
can_save=true
|
|
fi
|
|
cache_key="npm-download-${RUNNER_OS}-${runtime_arch}-${LOCKFILES_HASH}"
|
|
{
|
|
printf 'can-save=%s\n' "${can_save}"
|
|
printf 'path=%s\n' "${cache_path}"
|
|
printf 'key=%s\n' "${cache_key}"
|
|
} >> "${GITHUB_OUTPUT}"
|
|
- name: Restore and save npm package downloads
|
|
if: steps.context.outputs.can-save == 'true'
|
|
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
|
|
with:
|
|
path: ${{ steps.context.outputs.path }}
|
|
key: ${{ steps.context.outputs.key }}
|
|
- name: Restore npm package downloads without saving
|
|
if: steps.context.outputs.can-save != 'true'
|
|
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
|
|
with:
|
|
path: ${{ steps.context.outputs.path }}
|
|
key: ${{ steps.context.outputs.key }}
|