Рефакторинг инфраструктуры и конфигурации проекта
- Перенесена структура Django-конфига в src/core и src/settings - Унифицирована Docker-сборка и docker-compose для dev/prod - Добавлены startup-checks (DB/Redis) и обновлены env-шаблоны - Расширена OpenAPI-документация и ответы API - Удалены устаревшие deploy/requirements/служебные скрипты - Обновлены CI/CD, README и тесты
This commit is contained in:
196
Makefile
196
Makefile
@@ -1,149 +1,103 @@
|
||||
# Makefile для удобной работы с проектом
|
||||
.PHONY: help install setup-dev dev-up dev-down prod-up prod-down logs test test-cov test-fast test-parallel test-failfast lint format type-check security-check pre-commit pre-push migrate createsuperuser shell clean
|
||||
|
||||
.PHONY: help install dev-up dev-down test lint format migrate createsuperuser shell
|
||||
COMPOSE_DEV = docker compose -f docker-compose.dev.yml
|
||||
COMPOSE_PROD = docker compose -f docker-compose.prod.yml --env-file .env.prod
|
||||
|
||||
help:
|
||||
@echo "Доступные команды:"
|
||||
@echo ""
|
||||
@echo "🔧 Установка и настройка:"
|
||||
@echo " make install - Установка зависимостей"
|
||||
@echo ""
|
||||
@echo "🐳 Docker управление:"
|
||||
@echo " make dev-up - Запуск разработческого окружения (Docker)"
|
||||
@echo " make dev-down - Остановка разработческого окружения"
|
||||
@echo " make logs - Просмотр логов (Docker)"
|
||||
@echo ""
|
||||
@echo "🧪 Тестирование:"
|
||||
@echo " make test - Запуск тестов (по умолчанию все)"
|
||||
|
||||
@echo " Примеры:"
|
||||
@echo " make test # Все тесты"
|
||||
@echo " make test TARGET=user # Только user app"
|
||||
@echo " make test TARGET=test_models # Только модели"
|
||||
@echo ""
|
||||
@echo "🔍 Качество кода:"
|
||||
@echo " make lint - Проверка кода линтерами"
|
||||
@echo " make format - Форматирование кода"
|
||||
@echo " make type-check - Проверка типов"
|
||||
@echo " make security-check - Проверка безопасности"
|
||||
@echo " make pre-commit - Запуск pre-commit hooks"
|
||||
@echo ""
|
||||
@echo "🗄️ База данных:"
|
||||
@echo " make migrate - Выполнение миграций Django"
|
||||
@echo " make createsuperuser - Создание суперпользователя"
|
||||
@echo ""
|
||||
@echo "🛠️ Утилиты:"
|
||||
@echo " make shell - Запуск Django shell"
|
||||
@echo " make setup-dev - Настройка окружения разработки"
|
||||
@echo " make clean - Очистка временных файлов"
|
||||
@echo "Available commands:"
|
||||
@echo " make install - Install dependencies (uv sync --dev)"
|
||||
@echo " make setup-dev - Install git hooks (pre-commit + pre-push)"
|
||||
@echo " make dev-up - Start local stack (dev compose)"
|
||||
@echo " make dev-down - Stop local stack"
|
||||
@echo " make prod-up - Start prod compose (without db/redis)"
|
||||
@echo " make prod-down - Stop prod compose"
|
||||
@echo " make logs - Follow logs from dev compose"
|
||||
@echo " make test - Run tests (use TARGET=... to filter)"
|
||||
@echo " make pre-commit - Run all pre-commit checks"
|
||||
@echo " make pre-push - Run pre-push checks (tests)"
|
||||
@echo " make migrate - Run Django migrations"
|
||||
@echo " make createsuperuser - Create Django superuser"
|
||||
@echo " make shell - Open Django shell"
|
||||
@echo " make clean - Cleanup caches and artifacts"
|
||||
|
||||
install:
|
||||
uv pip install -r requirements.txt
|
||||
uv pip install -r requirements-dev.txt
|
||||
uv sync --dev
|
||||
|
||||
setup-dev: install
|
||||
./scripts/setup-precommit.sh
|
||||
|
||||
dev-up:
|
||||
docker-compose up -d
|
||||
@echo "Сервисы запущены. Приложение доступно по адресу: http://localhost:8000"
|
||||
$(COMPOSE_DEV) up -d
|
||||
|
||||
dev-down:
|
||||
docker-compose down
|
||||
$(COMPOSE_DEV) down
|
||||
|
||||
# Универсальная команда для тестирования с поддержкой аргументов
|
||||
# Использование:
|
||||
# make test # Все тесты
|
||||
# make test TARGET=user # Тесты user app
|
||||
# make test TARGET=models # Тесты моделей
|
||||
# make test TARGET=views # Тесты представлений
|
||||
# make test TARGET=serializers # Тесты сериализаторов
|
||||
# make test TARGET=services # Тесты сервисов
|
||||
test:
|
||||
@if [ "$(TARGET)" ]; then \
|
||||
echo "🧪 Запуск тестов: $(TARGET)"; \
|
||||
python run_tests_simple.py $(TARGET); \
|
||||
else \
|
||||
echo "🧪 Запуск всех тестов..."; \
|
||||
python run_tests_simple.py; \
|
||||
fi
|
||||
prod-up:
|
||||
$(COMPOSE_PROD) up -d
|
||||
|
||||
lint:
|
||||
@echo "🔍 Проверка кода линтерами..."
|
||||
ruff check src/
|
||||
black --check src/
|
||||
isort --check-only src/
|
||||
@echo "✅ Линтинг завершен"
|
||||
|
||||
format:
|
||||
@echo "🎨 Форматирование кода..."
|
||||
black src/
|
||||
isort src/
|
||||
ruff check --fix src/
|
||||
@echo "✅ Форматирование завершено"
|
||||
|
||||
migrate:
|
||||
@echo "🗄️ Выполнение миграций..."
|
||||
cd src && python manage.py makemigrations
|
||||
cd src && python manage.py migrate
|
||||
|
||||
createsuperuser:
|
||||
@echo "👤 Создание суперпользователя..."
|
||||
cd src && python manage.py createsuperuser
|
||||
|
||||
shell:
|
||||
@echo "🐚 Запуск Django shell..."
|
||||
cd src && python manage.py shell
|
||||
prod-down:
|
||||
$(COMPOSE_PROD) down
|
||||
|
||||
logs:
|
||||
@echo "📋 Просмотр логов..."
|
||||
docker-compose logs -f
|
||||
$(COMPOSE_DEV) logs -f
|
||||
|
||||
test:
|
||||
@if [ "$(TARGET)" ]; then \
|
||||
echo "Running tests: $(TARGET)"; \
|
||||
if [ "$(TARGET)" = "user" ]; then \
|
||||
./scripts/run-tests.sh ../tests/apps/user; \
|
||||
elif [ "$(TARGET)" = "models" ] || [ "$(TARGET)" = "views" ] || [ "$(TARGET)" = "serializers" ] || [ "$(TARGET)" = "services" ]; then \
|
||||
./scripts/run-tests.sh ../tests -k "test_$(TARGET)"; \
|
||||
elif echo "$(TARGET)" | grep -q '^test_'; then \
|
||||
./scripts/run-tests.sh ../tests -k "$(TARGET)"; \
|
||||
else \
|
||||
./scripts/run-tests.sh "$(TARGET)"; \
|
||||
fi; \
|
||||
else \
|
||||
echo "Running full test suite"; \
|
||||
./scripts/run-tests.sh; \
|
||||
fi
|
||||
|
||||
# Дополнительные команды для тестирования
|
||||
test-cov:
|
||||
@echo "🧪 Запуск тестов с покрытием..."
|
||||
python run_tests_simple.py --coverage
|
||||
./scripts/run-tests.sh ../tests --cov=src --cov-report=term-missing --cov-report=xml --cov-report=html
|
||||
|
||||
test-fast:
|
||||
@echo "🚀 Быстрые тесты (без медленных)..."
|
||||
python run_tests_simple.py --fast
|
||||
./scripts/run-tests.sh ../tests -m "not slow"
|
||||
|
||||
test-parallel:
|
||||
@echo "⚡ Параллельный запуск тестов..."
|
||||
python run_tests_simple.py --parallel=auto
|
||||
./scripts/run-tests.sh ../tests -n auto || ./scripts/run-tests.sh ../tests
|
||||
|
||||
test-failfast:
|
||||
@echo "❌ Тесты с остановкой при первой ошибке..."
|
||||
python run_tests_simple.py --failfast
|
||||
|
||||
# Дополнительные команды для качества кода
|
||||
type-check:
|
||||
@echo "🔍 Проверка типов с mypy..."
|
||||
mypy src/
|
||||
|
||||
security-check:
|
||||
@echo "🔒 Проверка безопасности..."
|
||||
bandit -r src/ -f json -o bandit-report.json || bandit -r src/
|
||||
./scripts/run-tests.sh ../tests -x
|
||||
|
||||
pre-commit:
|
||||
@echo "🔧 Запуск pre-commit hooks..."
|
||||
pre-commit run --all-files
|
||||
uv run pre-commit run --all-files
|
||||
|
||||
# Установка и настройка
|
||||
setup-dev:
|
||||
@echo "⚙️ Настройка окружения разработки..."
|
||||
pre-commit install
|
||||
@echo "✅ Окружение настроено"
|
||||
pre-push:
|
||||
uv run pre-commit run --hook-stage pre-push --all-files
|
||||
|
||||
lint: pre-commit
|
||||
|
||||
format:
|
||||
uv run pre-commit run --all-files ruff-format
|
||||
uv run pre-commit run --all-files ruff
|
||||
|
||||
type-check: pre-commit
|
||||
|
||||
security-check: pre-commit
|
||||
|
||||
migrate:
|
||||
cd src && uv run python manage.py makemigrations
|
||||
cd src && uv run python manage.py migrate
|
||||
|
||||
createsuperuser:
|
||||
cd src && uv run python manage.py createsuperuser
|
||||
|
||||
shell:
|
||||
cd src && uv run python manage.py shell
|
||||
|
||||
clean:
|
||||
@echo "🧹 Очистка временных файлов..."
|
||||
find . -type f -name "*.pyc" -delete
|
||||
find . -type d -name "__pycache__" -delete
|
||||
rm -rf *.log
|
||||
rm -rf htmlcov/
|
||||
rm -rf .coverage
|
||||
rm -rf coverage.xml
|
||||
rm -rf bandit-report.json
|
||||
rm -rf .pytest_cache/
|
||||
rm -rf .mypy_cache/
|
||||
rm -rf tests/__pycache__/
|
||||
rm -rf tests/apps/__pycache__/
|
||||
rm -rf tests/apps/user/__pycache__/
|
||||
@echo "✅ Очистка завершена"
|
||||
rm -rf *.log htmlcov .coverage coverage.xml bandit-report.json
|
||||
rm -rf .pytest_cache .mypy_cache .ruff_cache
|
||||
|
||||
Reference in New Issue
Block a user