Тест: основной тест runner'а
This commit is contained in:
114
.gitea/workflows/ci.yml
Normal file
114
.gitea/workflows/ci.yml
Normal file
@@ -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 .
|
||||||
Reference in New Issue
Block a user