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
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
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
|
- name: Install system deps for geo + WeasyPrint
|
||||||
# libpq/gdal/proj/geos — geo-стек (geopandas/shapely/pyproj).
|
# libpq/gdal/proj/geos — geo-стек (geopandas/shapely/pyproj).
|
||||||
# libcairo2/libpango* — нативные либы WeasyPrint: с ними PDF-тесты
|
# libcairo2/libpango* — нативные либы WeasyPrint: с ними PDF-тесты
|
||||||
|
|
@ -229,6 +242,16 @@ jobs:
|
||||||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||||
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
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
|
- name: Install system deps for geo + WeasyPrint
|
||||||
# app.main транзитивно тянет geo/PDF-модули. На macOS-dev импорт схемы
|
# app.main транзитивно тянет geo/PDF-модули. На macOS-dev импорт схемы
|
||||||
# проходит и без этих либ, но на ubuntu ставим как backend-tests
|
# проходит и без этих либ, но на ubuntu ставим как backend-tests
|
||||||
|
|
@ -238,9 +261,12 @@ jobs:
|
||||||
sudo apt-get install -y libpq-dev libgdal-dev libproj-dev libgeos-dev \
|
sudo apt-get install -y libpq-dev libgdal-dev libproj-dev libgeos-dev \
|
||||||
libcairo2 libpango-1.0-0 libpangoft2-1.0-0
|
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
|
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)
|
- name: Install frontend deps (npm ci)
|
||||||
working-directory: frontend
|
working-directory: frontend
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue