diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 78008735..ff1270b0 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -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