115 lines
2.9 KiB
YAML
115 lines
2.9 KiB
YAML
# ============================================================
|
|
# 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 .
|