# ============================================================ # Continuous Integration (CI) # Основной pipeline проверки проекта # ============================================================ name: CI # ------------------------------------------------------------ # Когда запускать workflow.yml # ------------------------------------------------------------ on: push: branches: - main - develop pull_request: # ------------------------------------------------------------ # Глобальные переменные # ------------------------------------------------------------ env: PYTHON_VERSION: "3.13" # ============================================================ # JOB 1 — Проверка качества кода # ============================================================ jobs: lint: name: Lint (ruff + mypy) runs-on: ubuntu-latest steps: # Клонирование репозитория - name: Checkout repository uses: actions/checkout@v4 # Установка Python - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} # Установка uv (быстрый менеджер зависимостей) - name: Install uv run: pip install uv # Кэширование зависимостей - name: Cache uv dependencies uses: actions/cache@v4 with: path: ~/.cache/uv key: ${{ runner.os }}-uv-${{ hashFiles('uv.lock') }} # Установка зависимостей - name: Install dependencies run: uv sync # Проверка кода линтером Ruff - name: Run Ruff run: ruff check . # Проверка типизации - name: Run MyPy run: mypy . # ============================================================ # JOB 2 — Тестирование # ============================================================ tests: name: Run tests runs-on: ubuntu-latest needs: lint steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install uv run: pip install uv - name: Install dependencies run: uv sync # Запуск pytest - name: Run tests run: pytest # ============================================================ # JOB 3 — Проверка Docker # ============================================================ docker: name: Docker build test runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 # Проверка что Dockerfile собирается - name: Build Docker image run: docker build .