fix(ci): set cache-dependency-path to package-lock.json #16
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/ci-setup-node-cache-dependency-path"
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?
Что сделано
Добавлена 1 строка в
.forgejo/workflows/ci.yml:cache-dependency-path: "package-lock.json"кactions/setup-node@v4.Изменение
Почему
Root cause:
setup-node@v4сcache: "npm"вычисляет cache-key, ища lock-файл по дефолтному списку путей.act-эмуляция на Forgejo runner имеет устаревший/сломанный дефолт — идёт кeslint.config.mjs(fallback), которого нет в проекте (используется Biome).lstat /root/.cache/act/.../eslint.config.mjs: no such file or directory→ failure.Почему pull_request работал, а push падал:
actrunner в Docker-контейнере, cache в/opt/hostedtoolcacheper-container (не персистит между запусками).setup-noderestored, не вычислял ключ → до lstat не дошёл → successeslint.config.mjs→ failureФикс:
cache-dependency-path: "package-lock.json"— явный путь, обходит дефолтный path-finding.setup-nodeчитаетpackage-lock.json(есть в репо, 109KB) → хэширует → cache-key.lstat eslint.config.mjsНЕ вызывается. Оба триггера (pull_request + push) вычисляют ключ идентично черезpackage-lock.json.Watch out
actcustom cache-dependency-path: стандартная опцияsetup-node@v4,actподдерживает. Если упадёт — вернёмся к удалениюcache: npm(Вариант A, медленнее на ~15с, но 100% надёжно).package-lock.json— cache restore, быстро.Pending
Cache restored from key: node-cache-linux-x64-npm-<hash>илиCache saved.slaid098-dev-002.md— issue #13 закрыт, root cause + фикс задокументированы.Closes #13
Code Review Summary
Инфра-фикс в 1 строку:
cache-dependency-path: "package-lock.json"добавлен кactions/setup-node@v4в.forgejo/workflows/ci.yml. Закрывает issue #13 (npm cache bug на push).Проверено
git diff --statподтверждает1 file changed, 1 insertion(+).cache-dependency-pathстоит внутриwith:блокаsetup-node@v4(строка 19), рядом сcache: "npm"(строка 18) — стандартная и документированная опция для кэширования npm.package-lock.jsonсуществует в корне репо (109 KB) — путь валиден.pipeline-status.Positives
cache-dependency-pathнадёжнее дефолта: устраняет неоднозначность поиска lock-файла на push event (вероятная причина бага #13).Suggestions (info, not blocking)
pushevent после merge вmain(workflow триггерится на push, строка 6-7). На pull_request кэш уже работал — баг воспроизводился именно на push. Рекомендую после merge сделать пустой коммит или дождаться первого push в main, чтобы убедиться, что cache hit проходит без ошибок.Verdict: APPROVE