when: event: [push, pull_request] branch: [dev, main, master] steps: - name: deps image: python:3.13 volumes: - /tmp/uv-cache:/root/.cache/uv environment: UV_CACHE_DIR: /root/.cache/uv UV_LINK_MODE: copy UV_PYTHON: "3.13" commands: - pip install uv - cd .. - | cat > pyproject.toml << 'EOF' [project] name = "pyaqa" version = "0.1.0" requires-python = ">=3.13" dependencies = [] [tool.uv.workspace] members = ["blog.pyaqa.ru", "pytfm"] EOF - git clone https://git.pyaqa.ru/pi3c/pytfm.git - cd $CI_WORKSPACE - rm -rf .venv - uv sync --group lints --group tests --group types --group dev - name: lint image: python:3.13 volumes: - /tmp/uv-cache:/root/.cache/uv environment: UV_CACHE_DIR: /root/.cache/uv UV_LINK_MODE: copy UV_PYTHON: "3.13" depends_on: [deps] commands: - pip install uv - uv run --no-sync ruff check . - uv run --no-sync ruff format --check . - uv run --no-sync isort --check-only . - name: type image: python:3.13 volumes: - /tmp/uv-cache:/root/.cache/uv environment: UV_CACHE_DIR: /root/.cache/uv UV_LINK_MODE: copy UV_PYTHON: "3.13" depends_on: [deps] commands: - pip install uv - uv run --no-sync mypy . - name: test-unit image: python:3.13 volumes: - /tmp/uv-cache:/root/.cache/uv environment: UV_CACHE_DIR: /root/.cache/uv UV_LINK_MODE: copy UV_PYTHON: "3.13" depends_on: [deps] commands: - pip install uv - uv run --no-sync pytest tests/unit/ - name: test-e2e image: python:3.13 volumes: - /tmp/uv-cache:/root/.cache/uv environment: UV_CACHE_DIR: /root/.cache/uv UV_LINK_MODE: copy UV_PYTHON: "3.13" depends_on: [deps] commands: - pip install uv - apt-get update && apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2 - uv run --no-sync playwright install chromium - uv run --no-sync blog & - sleep 5 - uv run --no-sync pytest tests/e2e/ -v --no-cov