initial commit
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