fix(ci): bump setup-node to v5 to fix act eslint.config.mjs lstat bug #22

Closed
opened 2026-08-07 18:22:29 +03:00 by slaid098 · 0 comments
Owner

Контекст

PR #21 (убрать cache: npm) влит, но deploy.yml всё ещё падает на setup-node@v4:

::group::Run actions/setup-node@v4
with:
  node-version: 22
❌  Failure - Main actions/setup-node@v4
lstat /root/.cache/act/.../eslint.config.mjs: no such file or directory

cache: "npm" убран, cache-dependency-path убран, но lstat eslint.config.mjs ВСЁ РАВНО вызывается. Это баг в самом act-клоне setup-node@v4 — он пытается найти eslint.config.mjs для problem matchers (add-matcher eslint-stylish.json) независимо от cache опции.

Сравнение (оба на sha=57f2709, одновременно):

  • ci.yml (run id=144, success): Found in cache @ /opt/hostedtoolcache/node/22.23.2/x64 → Node найден в tool cache → add-matchernpm ci → success. lstat НЕ вызывается.
  • deploy.yml (run id=145, failure): Node НЕ найден в /opt/hostedtoolcache → попытка вычислить/скачать → lstat eslint.config.mjs → failure.

Root cause: act-эмуляция setup-node@v4 при cache-miss в tool cache пытается загрузить Node и параллельно ищет eslint.config.mjs (для problem matchers) — файла нет (проект на Biome) → lstat failure. Это баг act-клона setup-node@v4, не наш код, не cache опция.

Блокер: deploy не работает, сайт не обновляется (PR #15 content не в проде).

Задача

  1. Обновить actions/setup-node@v4@v5 в .forgejo/workflows/ci.yml и .forgejo/workflows/deploy.yml.
  2. Если v5 имеет тот же баг → понизить до @v3 (стабильная, без problem matchers бага).
  3. Проверить: push на main → оба workflow success.

Почему v5 (или v3)

  • v5 — последняя версия, возможно исправила act-совместимость и problem matchers баг.
  • v3 — стабильная, широко используется, не имеет eslint.config.mjs problem matchers бага (другая архитектура add-matcher).
  • v4 — ломается на act при cache-miss в tool cache.

Контракты

  • ci.yml и deploy.yml остаются в .forgejo/workflows/.
  • Триггеры не меняются.
  • Steps не меняются (только версия action).
  • node-version: "22", cache опция ОТСУТСТВУЕТ (убрана в PR #21).
  • Секреты deploy.yml не трогаются.

Инварианты

  • CI quality-gate и деплой — обязательны на push.
  • npm ci deterministic без cache.

Граничные случаи

  • v5 может иметь breaking changes (новые inputs/outputs) — проверить.
  • v3 может не поддерживать node-version: 22 — проверить (v3 поддерживает, node 22 вышел в 2024, v3 обновляется).
  • Если оба не работают → self-hosted runner (инфра-решение).

Влияние на связанные компоненты

  • .forgejo/workflows/ci.yml — 1 строка (версия).
  • .forgejo/workflows/deploy.yml — 1 строка (версия).
  • pipeline-status — после фикса оба workflow success.
  • Сайт — обновится (PR #15 content).

Вне scope

  • Self-hosted runner.
  • Разделение jobs.

Критерии приемки

  • setup-node@v5 (или @v3) в обоих workflow.
  • Push на main → ci.yml success + deploy.yml success.
  • Логи: НЕТ lstat eslint.config.mjs (новая версия не имеет этого бага).
  • Сайт slaid098.dev обновлён.
## Контекст PR #21 (убрать `cache: npm`) влит, но deploy.yml **всё ещё падает** на `setup-node@v4`: ``` ::group::Run actions/setup-node@v4 with: node-version: 22 ❌ Failure - Main actions/setup-node@v4 lstat /root/.cache/act/.../eslint.config.mjs: no such file or directory ``` `cache: "npm"` убран, `cache-dependency-path` убран, но `lstat eslint.config.mjs` ВСЁ РАВНО вызывается. Это баг в самом `act`-клоне `setup-node@v4` — он пытается найти `eslint.config.mjs` для problem matchers (`add-matcher eslint-stylish.json`) независимо от cache опции. **Сравнение** (оба на sha=57f2709, одновременно): - **ci.yml (run id=144, success)**: `Found in cache @ /opt/hostedtoolcache/node/22.23.2/x64` → Node найден в tool cache → `add-matcher` → `npm ci` → success. `lstat` НЕ вызывается. - **deploy.yml (run id=145, failure)**: Node НЕ найден в `/opt/hostedtoolcache` → попытка вычислить/скачать → `lstat eslint.config.mjs` → failure. **Root cause**: `act`-эмуляция `setup-node@v4` при cache-miss в tool cache пытается загрузить Node и параллельно ищет `eslint.config.mjs` (для problem matchers) — файла нет (проект на Biome) → `lstat` failure. Это баг `act`-клона `setup-node@v4`, не наш код, не `cache` опция. **Блокер**: deploy не работает, сайт не обновляется (PR #15 content не в проде). ## Задача 1. Обновить `actions/setup-node@v4` → `@v5` в `.forgejo/workflows/ci.yml` и `.forgejo/workflows/deploy.yml`. 2. Если `v5` имеет тот же баг → понизить до `@v3` (стабильная, без problem matchers бага). 3. Проверить: push на main → оба workflow success. ## Почему v5 (или v3) - **v5** — последняя версия, возможно исправила `act`-совместимость и problem matchers баг. - **v3** — стабильная, широко используется, не имеет `eslint.config.mjs` problem matchers бага (другая архитектура add-matcher). - **v4** — ломается на `act` при cache-miss в tool cache. ## Контракты - ci.yml и deploy.yml остаются в `.forgejo/workflows/`. - Триггеры не меняются. - Steps не меняются (только версия action). - `node-version: "22"`, `cache` опция ОТСУТСТВУЕТ (убрана в PR #21). - Секреты deploy.yml не трогаются. ## Инварианты - CI quality-gate и деплой — обязательны на push. - `npm ci` deterministic без cache. ## Граничные случаи - `v5` может иметь breaking changes (новые inputs/outputs) — проверить. - `v3` может не поддерживать `node-version: 22` — проверить (v3 поддерживает, node 22 вышел в 2024, v3 обновляется). - Если оба не работают → self-hosted runner (инфра-решение). ## Влияние на связанные компоненты - `.forgejo/workflows/ci.yml` — 1 строка (версия). - `.forgejo/workflows/deploy.yml` — 1 строка (версия). - `pipeline-status` — после фикса оба workflow success. - Сайт — обновится (PR #15 content). ## Вне scope - Self-hosted runner. - Разделение jobs. ## Критерии приемки - `setup-node@v5` (или `@v3`) в обоих workflow. - Push на main → ci.yml success + deploy.yml success. - Логи: НЕТ `lstat eslint.config.mjs` (новая версия не имеет этого бага). - Сайт slaid098.dev обновлён.
Sign in to join this conversation.
No labels
bug
performance
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/slaid098-dev#22
No description provided.