fix(ci): remove npm cache from setup-node in ci.yml and deploy.yml #21
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/ci-remove-npm-cache"
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?
Что сделано
Удалены
cache: "npm"иcache-dependency-path: "package-lock.json"изactions/setup-node@v4в обоих workflow:.forgejo/workflows/ci.yml(2 строки удалены).forgejo/workflows/deploy.yml(2 строки удалены)Изменение
Почему
PR #16 и PR #18 не решили проблему. Анализ логов:
Found in cache @ /opt/hostedtoolcache→ cache restored → НЕ вычислял ключ → success.cache-dependency-pathпередан, но не использован.lstat eslint.config.mjs→ failure.cache-dependency-path: package-lock.jsonпередан, ноactигнорирует его.Вывод:
cache-dependency-pathНЕ работает вact-эмуляцииsetup-node@v4. Опция передаётся, ноactпри cache-miss вычисляет ключ через дефолтный path-finding (eslint.config.mjs), игнорируя custom path. ci.yml работал только из-за разогретого cache — nondeterministic.Фикс: убрать
cache: npmполностью.npm cideterministic поpackage-lock.json, ~10-15с без cache. Замедление приемлемо — качество важнее скорости. 100% надёжно, не зависит отactcache-эмуляции.Watch out
npm ciполный → ~15с → success). deploy.yml проверится на push после merge.npm ciбез cache: ~10-15с download + install. На 4 параллельных run — 4x нагрузка на npm registry (приемлемо).actper-container cache) — инфра-решение, отдельная задача.Pending
cache-dependency-pathНЕ работает наact, Вариант A (без cache) — единственный надёжный.Closes #20
Code Review Summary
Чистый фикс-следствие: удалены 4 строки (
cache: "npm"+cache-dependency-path: "package-lock.json"из ci.yml и deploy.yml).setup-node@v4сnode-version: "22"сохранён в обоих workflow. Steps не тронуты (ci: lint/typecheck/knip/test/build; deploy: build/vercel). Секреты deploy.yml (VERCEL_TOKEN,FORGEJO_URL,FORGEJO_TOKEN,WEBHOOK_SECRET) не тронуты. CI green (run id=143).Positives
npm cideterministic без cache: clean install изpackage-lock.jsonкаждый run, не зависит от состояния~/.npm. Cache был источником flakiness черезact(игнорируетcache-dependency-pathпри cache-miss) — удаление устраняет корень проблемы, а не маскирует.Confirmations
setup-node@v4сnode-version: "22"— сохранён (ci.yml:15-17, deploy.yml:15-17).Блокер, CI green,
npm cideterministic — одобрено к мержу.Verdict: APPROVE