chore: Add development tooling and automation
Makefile (20+ commands): Development Docker Commands: - make build: Build Docker image - make up: Start containers - make down: Stop containers - make logs: Show logs - make shell: Open bot shell - make ps: Show container status Production Docker Commands: - make prod-build: Build and publish to registry - make prod-up: Deploy production stack - make prod-down: Stop production - make prod-logs: Production logs - make prod-ps: Production status - make prod-restart: Restart services - make prod-pull: Update images - make prod-backup: Backup to /var/backups Development Commands: - make venv: Create virtual environment - make install: Install dependencies - make run: Run bot locally - make test: Run tests - make lint: Run linter - make clean: Clean cache and temp files - make backup: Backup data directory Utility: - make help: Show all commands with descriptions
This commit is contained in:
parent
9491811425
commit
8e56415e68
176
Makefile
Normal file
176
Makefile
Normal file
@ -0,0 +1,176 @@
|
||||
.PHONY: help build up down restart logs shell clean test lint
|
||||
|
||||
# По умолчанию показываем help
|
||||
help:
|
||||
@echo "🤖 BUH Bot - Makefile команды:"
|
||||
@echo ""
|
||||
@echo "Development Docker:"
|
||||
@echo " make build - Собрать Docker образ"
|
||||
@echo " make up - Запустить бота (dev)"
|
||||
@echo " make down - Остановить бота"
|
||||
@echo " make restart - Перезапустить бота"
|
||||
@echo " make logs - Показать логи (Ctrl+C для выхода)"
|
||||
@echo " make shell - Войти в контейнер"
|
||||
@echo " make ps - Статус контейнера"
|
||||
@echo ""
|
||||
@echo "Production Docker:"
|
||||
@echo " make prod-build - Собрать и опубликовать образ в registry"
|
||||
@echo " make prod-up - Запустить production stack"
|
||||
@echo " make prod-down - Остановить production stack"
|
||||
@echo " make prod-logs - Логи production"
|
||||
@echo " make prod-ps - Статус production"
|
||||
@echo ""
|
||||
@echo "Разработка:"
|
||||
@echo " make test - Запустить тесты"
|
||||
@echo " make lint - Проверить код (flake8)"
|
||||
@echo " make clean - Очистить временные файлы"
|
||||
@echo " make backup - Создать backup данных"
|
||||
@echo ""
|
||||
@echo "Локальная разработка:"
|
||||
@echo " make venv - Создать виртуальное окружение"
|
||||
@echo " make install - Установить зависимости"
|
||||
@echo " make run - Запустить бота локально"
|
||||
|
||||
# Docker команды
|
||||
build:
|
||||
@echo "🔨 Сборка Docker образа..."
|
||||
docker-compose build --no-cache
|
||||
|
||||
up:
|
||||
@echo "🚀 Запуск бота..."
|
||||
@mkdir -p data logs temp_documents
|
||||
docker-compose up -d
|
||||
@echo "✅ Бот запущен!"
|
||||
@echo "📝 Логи: make logs"
|
||||
|
||||
down:
|
||||
@echo "🛑 Остановка бота..."
|
||||
docker-compose down
|
||||
@echo "✅ Бот остановлен"
|
||||
|
||||
restart:
|
||||
@echo "🔄 Перезапуск бота..."
|
||||
docker-compose restart
|
||||
@echo "✅ Бот перезапущен"
|
||||
|
||||
logs:
|
||||
@echo "📝 Логи бота (Ctrl+C для выхода):"
|
||||
docker-compose logs -f
|
||||
|
||||
shell:
|
||||
@echo "🐚 Вход в контейнер..."
|
||||
docker-compose exec buh_bot bash
|
||||
|
||||
ps:
|
||||
@echo "📊 Статус контейнера:"
|
||||
docker-compose ps
|
||||
|
||||
# Разработка
|
||||
test:
|
||||
@echo "🧪 Запуск тестов..."
|
||||
python -m pytest tests/ -v
|
||||
|
||||
lint:
|
||||
@echo "🔍 Проверка кода..."
|
||||
flake8 bot.py modules/ --max-line-length=79
|
||||
|
||||
clean:
|
||||
@echo "🧹 Очистка временных файлов..."
|
||||
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
||||
find . -type f -name "*.pyo" -delete 2>/dev/null || true
|
||||
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
||||
rm -rf .pytest_cache 2>/dev/null || true
|
||||
rm -rf htmlcov 2>/dev/null || true
|
||||
rm -rf temp_documents/* 2>/dev/null || true
|
||||
@echo "✅ Очистка завершена"
|
||||
|
||||
backup:
|
||||
@echo "💾 Создание backup..."
|
||||
@mkdir -p backups
|
||||
tar -czf backups/backup-$$(date +%Y%m%d-%H%M%S).tar.gz data/ logs/
|
||||
@echo "✅ Backup создан в backups/"
|
||||
|
||||
# Локальная разработка
|
||||
venv:
|
||||
@echo "🐍 Создание виртуального окружения..."
|
||||
python3 -m venv venv
|
||||
@echo "✅ Виртуальное окружение создано"
|
||||
@echo "Активируйте: source venv/bin/activate"
|
||||
|
||||
install:
|
||||
@echo "📦 Установка зависимостей..."
|
||||
pip install -r requirements.txt
|
||||
@echo "✅ Зависимости установлены"
|
||||
|
||||
run:
|
||||
@echo "🚀 Запуск бота локально..."
|
||||
python bot.py
|
||||
|
||||
# Дополнительные команды
|
||||
update:
|
||||
@echo "🔄 Обновление бота..."
|
||||
git pull
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
@echo "✅ Бот обновлён и перезапущен"
|
||||
|
||||
stats:
|
||||
@echo "📊 Статистика использования ресурсов:"
|
||||
docker stats buh_bot --no-stream
|
||||
|
||||
check-env:
|
||||
@echo "🔍 Проверка .env файла..."
|
||||
@if [ ! -f .env ]; then \
|
||||
echo "❌ Файл .env не найден!"; \
|
||||
echo "Создайте: cp .env.example .env"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@if ! grep -q "TELEGRAM_BOT_TOKEN=.*[^_here]" .env; then \
|
||||
echo "⚠️ TELEGRAM_BOT_TOKEN не настроен!"; \
|
||||
else \
|
||||
echo "✅ .env настроен"; \
|
||||
fi
|
||||
|
||||
# Production команды
|
||||
prod-build:
|
||||
@echo "🔨 Сборка и публикация production образа..."
|
||||
@chmod +x build-image.sh
|
||||
./build-image.sh
|
||||
|
||||
prod-up:
|
||||
@echo "🚀 Запуск production stack..."
|
||||
@if [ ! -f .env.prod ]; then \
|
||||
echo "❌ Файл .env.prod не найден!"; \
|
||||
echo "Создайте: cp .env.prod.example .env.prod"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@chmod +x deploy-prod.sh
|
||||
./deploy-prod.sh
|
||||
|
||||
prod-down:
|
||||
@echo "🛑 Остановка production stack..."
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.prod down
|
||||
|
||||
prod-logs:
|
||||
@echo "📝 Логи production (Ctrl+C для выхода):"
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.prod logs -f
|
||||
|
||||
prod-ps:
|
||||
@echo "📊 Статус production:"
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.prod ps
|
||||
|
||||
prod-restart:
|
||||
@echo "🔄 Перезапуск production..."
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.prod restart
|
||||
|
||||
prod-pull:
|
||||
@echo "📥 Обновление образов..."
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.prod pull
|
||||
|
||||
prod-backup:
|
||||
@echo "💾 Создание production backup..."
|
||||
@mkdir -p /var/backups/buh_bot
|
||||
sudo tar -czf /var/backups/buh_bot/backup-$$(date +%Y%m%d-%H%M%S).tar.gz \
|
||||
/var/lib/buh_bot/data /var/log/buh_bot
|
||||
@echo "✅ Backup создан в /var/backups/buh_bot/"
|
||||
Loading…
x
Reference in New Issue
Block a user