Files

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 .