ci: cache uv + skip dev deps to speed up gate jobs (#1709)
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
This commit is contained in:
parent
57800b24e9
commit
4e8086cc1f
1 changed files with 28 additions and 2 deletions
|
|
@ -88,6 +88,19 @@ jobs:
|
|||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
||||
|
||||
- name: Cache uv packages
|
||||
# Кросс-прогонный кэш скачанных/собранных wheel'ов (~/.cache/uv по умолч.).
|
||||
# `uv sync --frozen` без него каждый прогон тянет весь geo-стек заново —
|
||||
# доминирующая часть времени job (#1709). Ключ по uv.lock; continue-on-error
|
||||
# чтобы сбой cache-бэкенда раннера НИКОГДА не ронял gate.
|
||||
uses: actions/cache@v4
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: ~/.cache/uv
|
||||
key: uv-${{ runner.os }}-${{ hashFiles('backend/uv.lock') }}
|
||||
restore-keys: |
|
||||
uv-${{ runner.os }}-
|
||||
|
||||
- name: Install system deps for geo + WeasyPrint
|
||||
# libpq/gdal/proj/geos — geo-стек (geopandas/shapely/pyproj).
|
||||
# libcairo2/libpango* — нативные либы WeasyPrint: с ними PDF-тесты
|
||||
|
|
@ -229,6 +242,16 @@ jobs:
|
|||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
||||
|
||||
- name: Cache uv packages
|
||||
# См. backend-tests: кросс-прогонный кэш ~/.cache/uv, тот же ключ по uv.lock.
|
||||
uses: actions/cache@v4
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: ~/.cache/uv
|
||||
key: uv-${{ runner.os }}-${{ hashFiles('backend/uv.lock') }}
|
||||
restore-keys: |
|
||||
uv-${{ runner.os }}-
|
||||
|
||||
- name: Install system deps for geo + WeasyPrint
|
||||
# app.main транзитивно тянет geo/PDF-модули. На macOS-dev импорт схемы
|
||||
# проходит и без этих либ, но на ubuntu ставим как backend-tests
|
||||
|
|
@ -238,9 +261,12 @@ jobs:
|
|||
sudo apt-get install -y libpq-dev libgdal-dev libproj-dev libgeos-dev \
|
||||
libcairo2 libpango-1.0-0 libpangoft2-1.0-0
|
||||
|
||||
- name: Install backend deps (uv sync --frozen)
|
||||
- name: Install backend deps (uv sync --frozen --no-dev)
|
||||
working-directory: backend
|
||||
run: uv sync --frozen
|
||||
# --no-dev: этот job только дампит app.openapi() (нужен runtime app.main).
|
||||
# pytest/ruff/coverage не используются → не ставим dev-группу (быстрее).
|
||||
# Dockerfile тоже собирает с --no-dev → импорт app.main гарантированно ок.
|
||||
run: uv sync --frozen --no-dev
|
||||
|
||||
- name: Install frontend deps (npm ci)
|
||||
working-directory: frontend
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue