65 lines
2.9 KiB
Makefile
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
|