fix(ci): remove npm cache from setup-node (act ignores cache-dependency-path) #20
Labels
No labels
bug
performance
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
slaid098/slaid098-dev#20
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
PR #16 (
cache-dependency-path: package-lock.jsonдля ci.yml) и PR #18 (то же для deploy.yml) влиты, но не решили проблему. Анализ логов:Found in cache @ /opt/hostedtoolcache/node/22.23.2/x64→ cache restored → НЕ вычисляет ключ → доlstat eslint.config.mjsне дошёл → success.cache-dependency-pathпередан, но не использован (cache уже был)./opt/hostedtoolcache→ вычисляет ключ →lstat /root/.cache/act/.../eslint.config.mjs: no such file or directory→ failure.cache-dependency-path: package-lock.jsonпередан, ноactигнорирует его — всё равно идёт кeslint.config.mjs.Вывод:
cache-dependency-pathНЕ работает вact-эмуляцииsetup-node@v4на Forgejo runner. Опция передаётся, ноactпри cache-miss вычисляет ключ через дефолтный path-finding (eslint.config.mjs), игнорируя custom path. ci.yml работает только потому что cache разогрет в/opt/hostedtoolcache— это nondeterministic, сломается при GC/новом контейнере.Блокер: deploy.yml падает на каждом push — сайт не обновляется (PR #15 content не в проде).
Задача
cache: "npm"иcache-dependency-path: "package-lock.json"изactions/setup-node@v4в.forgejo/workflows/ci.yml(строки 18-19).cache: "npm"иcache-dependency-path: "package-lock.json"изactions/setup-node@v4в.forgejo/workflows/deploy.yml(строки 18-19).npm ciвыполняется полностью (без cache restore), deterministic.Почему Вариант A (без cache), а не B
cache-dependency-path) — не работает наact(доказано логами run id=142). Опция игнорируется при cache-miss.npm cideterministic поpackage-lock.json, ~10-15с без cache. Замедление приемлемо для CI (качество важнее скорости).act) — инфра-решение, отдельная задача. Покаact— cache ненадёжен.Контракты
.forgejo/workflows/.cacheудалён).node-version: "22"сохраняется.Инварианты
npm cideterministic — тот же результат всегда (без cache-nondeterminism).Граничные случаи
npm ciбез cache: ~10-15с (download + install). На 4 параллельных run — 4x нагрузка на npm registry. Приемлемо (npm registry handles это).actper-container cache).Влияние на связанные компоненты
.forgejo/workflows/ci.yml— убрать 2 строки..forgejo/workflows/deploy.yml— убрать 2 строки.pipeline-status— после фикса оба workflow success на push.cache-dependency-pathНЕ работает наact, Вариант A — единственный надёжный.Вне scope
Критерии приемки
cache: "npm"иcache-dependency-pathудалены из обоих workflow.npm cideterministic).lstat eslint.config.mjs(опция cache отсутствует, lstat не вызывается).npm ciвыполняется ~10-15с (без cache restore, но deterministic).