From 9696a5ec7fbebc1d57556af2f257c9609229aa37 Mon Sep 17 00:00:00 2001 From: Verum Date: Sat, 7 Mar 2026 01:31:00 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82:=20=D0=BE=D1=81=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=BD=D0=BE=D0=B9=20=D1=82=D0=B5=D1=81=D1=82=20run?= =?UTF-8?q?ner'=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci.yml | 114 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 .gitea/workflows/ci.yml 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 .