123
Some checks failed
CI / Lint (ruff + mypy) (push) Failing after 34s
CI / Run tests (push) Has been skipped
CI / Docker build test (push) Successful in 13s

This commit is contained in:
2026-04-02 18:04:04 +07:00
commit 02afbd23ec
31 changed files with 2624 additions and 0 deletions

114
.gitea/workflows/ci.yml Normal file
View 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 .

View File

@@ -0,0 +1,33 @@
# ============================================================
# Auto format code
# ============================================================
name: Auto Format
on:
pull_request:
jobs:
format:
name: Format code
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install formatter
run: pip install ruff
# Автоматическое форматирование
- name: Run formatter
run: ruff format .
# Проверка что после форматирования нет изменений
- name: Check formatting
run: ruff check .

View File

@@ -0,0 +1,36 @@
# ============================================================
# Security checks
# Проверка уязвимостей зависимостей
# ============================================================
name: Security
on:
schedule:
- cron: "0 3 * * 1"
workflow_dispatch:
jobs:
security-scan:
name: Dependency security scan
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Установка Python
- uses: actions/setup-python@v5
with:
python-version: "3.12"
# Установка инструмента проверки
- name: Install pip-audit
run: pip install pip-audit
# Проверка зависимостей
- name: Run security audit
run: pip-audit

View File

@@ -0,0 +1,31 @@
# ============================================================
# Release workflow
# Автоматическая публикация релизов
# ============================================================
name: Release
on:
push:
tags:
- "v*"
jobs:
release:
name: Create release
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
# Установка Python
- uses: actions/setup-python@v5
with:
python-version: "3.12"
# Создание релиза
- name: Create GitHub Release
uses: softprops/action-gh-release@v2