diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..9053b3b --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,114 @@ +# ============================================================ +# 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 .