Files
netrunner-backend/Makefile
T
2026-06-29 18:05:33 +07:00

65 lines
2.9 KiB
Makefile

.DEFAULT_GOAL := help
.PHONY: help dev dev-down dev-logs dev-rebuild migrate db-shell \
fmt lint test check sqlx-prepare build-image push-image deploy clean
DEV_COMPOSE := docker-compose.yml
PROD_COMPOSE := docker-compose.prod.yml
IMAGE ?= ghcr.io/nineap/netrunner-control-plane:latest
help: ## Показать список команд
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
| awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-16s\033[0m %s\n", $$1, $$2}'
# ----------------------------------------------------------------------
# Локальная разработка (fully-dockerized, hot-reload)
# ----------------------------------------------------------------------
dev: ## Поднять локальный стек (db+redis+app с автоперекомпиляцией)
docker compose -f $(DEV_COMPOSE) up --build
dev-down: ## Остановить локальный стек (тома сохраняются)
docker compose -f $(DEV_COMPOSE) down
dev-logs: ## Логи приложения в дев-стеке
docker compose -f $(DEV_COMPOSE) logs -f app
dev-rebuild: ## Пересобрать дев-образ приложения с нуля
docker compose -f $(DEV_COMPOSE) build --no-cache app
migrate: ## Применить миграции в дев-БД
docker compose -f $(DEV_COMPOSE) run --rm app cargo run -- --migrate
db-shell: ## Зайти в psql дев-БД
docker compose -f $(DEV_COMPOSE) exec db psql -U netrunner_admin -d netrunner
# ----------------------------------------------------------------------
# Качество кода (то же, что гоняет CI)
# ----------------------------------------------------------------------
fmt: ## Форматирование
cargo fmt --all
lint: ## Clippy как в CI (-D warnings)
SQLX_OFFLINE=true cargo clippy --all-targets -- -D warnings
test: ## Тесты (нужен запущенный Postgres + DATABASE_URL)
cargo test --all-targets
check: fmt lint ## fmt + lint одной командой
sqlx-prepare: ## Обновить offline-кеш sqlx (если появятся query!-макросы)
cargo sqlx prepare
# ----------------------------------------------------------------------
# Прод-образ (обычно это делает CI, но можно и локально)
# ----------------------------------------------------------------------
build-image: ## Собрать прод-образ локально
docker build -t $(IMAGE) .
push-image: ## Запушить прод-образ в GHCR
docker push $(IMAGE)
deploy: ## Подсказка: деплой запускается вручную из GitHub Actions
@echo "Деплой выкатывается вручную: GitHub → Actions → 'Deploy to VPS (Manual)' → Run workflow."
clean: ## Снести дев-стек вместе с томами (БД и кеши компиляции!)
docker compose -f $(DEV_COMPOSE) down -v