ci: cache uv + skip dev deps to speed up gate jobs (#1709) #1717

Merged
lekss361 merged 1 commit from ci/cache-uv-speed-gates-1709 into main 2026-06-17 19:31:35 +00:00
Owner

Summary

Ускоряет backend-tests и openapi-codegen-check (часть #1709 — они очень долгие).

  • Cache uv (~/.cache/uv) через actions/cache@v4 в обоих job, ключ по backend/uv.lock + restore-keys для частичного хита. continue-on-error: true → сбой cache-бэкенда раннера никогда не уронит gate.
  • openapi-codegen-check → uv sync --frozen --no-dev: job только импортирует app.main для дампа app.openapi(); pytest/ruff/coverage не нужны. Dockerfile тоже --no-dev → импорт гарантирован.

Почему так долго (диагностика)

Полезная работа job ≈ 2с (дамп схемы → openapi-typescriptgit diff). Остальные ~3 мин — пересборка окружения каждый прогон: Set up job (pull act-образа, особенно cold на новом runner-3), apt geo+WeasyPrint, uv sync --frozen (весь geopandas/shapely/pyproj/weasyprint), npm ci. uv sync был некэширован (npm уже кэшируется setup-node) → главный рычаг.

Эффект

  • На cache-hit uv sync падает с десятков секунд до секунд → оба gate-job заметно быстрее на повторных прогонах.
  • --no-dev дополнительно срезает установку pytest/ruff/coverage в codegen-job.
  • Cold Set up job (~1.5 мин) на runner-3 — разовый прогрев docker-кэша образа, не лечится здесь.

Test plan

  • Этот PR: оба job зелёные; на 2-м прогоне (cache warm) Install backend deps заметно быстрее.
  • openapi-codegen-check всё ещё ловит дрейф (assert api-types.ts) — --no-dev не влияет на дамп схемы.
  • При недоступном cache-бэкенде step Cache uvcontinue-on-error, gate не падает.

Refs #1709

## Summary Ускоряет `backend-tests` и `openapi-codegen-check` (часть #1709 — они очень долгие). - **Cache uv** (`~/.cache/uv`) через `actions/cache@v4` в обоих job, ключ по `backend/uv.lock` + `restore-keys` для частичного хита. `continue-on-error: true` → сбой cache-бэкенда раннера никогда не уронит gate. - **openapi-codegen-check → `uv sync --frozen --no-dev`**: job только импортирует `app.main` для дампа `app.openapi()`; pytest/ruff/coverage не нужны. Dockerfile тоже `--no-dev` → импорт гарантирован. ## Почему так долго (диагностика) Полезная работа job ≈ 2с (дамп схемы → `openapi-typescript` → `git diff`). Остальные ~3 мин — пересборка окружения **каждый** прогон: `Set up job` (pull act-образа, особенно cold на новом `runner-3`), apt geo+WeasyPrint, `uv sync --frozen` (весь geopandas/shapely/pyproj/weasyprint), `npm ci`. `uv sync` был **некэширован** (npm уже кэшируется `setup-node`) → главный рычаг. ## Эффект - На cache-hit `uv sync` падает с десятков секунд до секунд → оба gate-job заметно быстрее на повторных прогонах. - `--no-dev` дополнительно срезает установку pytest/ruff/coverage в codegen-job. - Cold `Set up job` (~1.5 мин) на `runner-3` — разовый прогрев docker-кэша образа, не лечится здесь. ## Test plan - [ ] Этот PR: оба job зелёные; на 2-м прогоне (cache warm) `Install backend deps` заметно быстрее. - [ ] `openapi-codegen-check` всё ещё ловит дрейф (assert api-types.ts) — `--no-dev` не влияет на дамп схемы. - [ ] При недоступном cache-бэкенде step `Cache uv` → `continue-on-error`, gate не падает. Refs #1709
lekss361 added 1 commit 2026-06-17 19:29:54 +00:00
ci: cache uv + skip dev deps to speed up gate jobs (#1709)
Some checks failed
CI / changes (pull_request) Successful in 6s
CI / frontend-tests (pull_request) Successful in 47s
CI / openapi-codegen-check (pull_request) Failing after 2m29s
CI / backend-tests (pull_request) Failing after 9m35s
4e8086cc1f
backend-tests и openapi-codegen-check тратят ~90% времени не на работу
(дамп схемы + pytest), а на пересборку окружения с нуля каждый прогон.
Доминанта — 'uv sync --frozen' тянет весь geo/WeasyPrint-стек заново, т.к.
~/.cache/uv не кэшировался между прогонами (npm уже кэширован setup-node).

Изменения:
- Cache uv (~/.cache/uv) через actions/cache в обоих job, ключ по backend/uv.lock,
  restore-keys для частичного хита. continue-on-error → сбой cache-бэкенда
  раннера не ломает gate.
- openapi-codegen-check: 'uv sync --frozen --no-dev' — job только импортирует
  app.main для дампа OpenAPI, dev-группа (pytest/ruff/coverage) не нужна.
  Dockerfile тоже --no-dev, поэтому импорт гарантирован.

Refs #1709
lekss361 merged commit 73f47da2f9 into main 2026-06-17 19:31:35 +00:00
lekss361 deleted branch ci/cache-uv-speed-gates-1709 2026-06-17 19:31:36 +00:00
Sign in to join this conversation.
No reviewers
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: lekss361/gendesign#1717
No description provided.