iloom/Makefile

75 lines
2.4 KiB
Makefile
Raw Normal View History

.PHONY: all build run stop test lint migrate-up clean help
SERVICES = gateway auth-service purchaser-service textile-service washing-service
help: ## 显示帮助信息
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
all: build ## 构建所有服务
build: ## 构建所有服务二进制
@for svc in $(SERVICES); do \
echo "==> Building $$svc..."; \
cd $$svc && go build -o bin/$$svc ./cmd/ && cd ..; \
done
@echo "==> All services built."
run: ## 启动所有服务 (Docker Compose)
docker-compose up --build -d
run-dev: ## 启动开发环境 (前台,含日志)
docker-compose up --build
stop: ## 停止所有服务
docker-compose down
restart: stop run ## 重启所有服务
logs: ## 查看所有服务日志
docker-compose logs -f
logs-%: ## 查看指定服务日志 (如: make logs-gateway)
docker-compose logs -f $*
test: ## 运行所有服务的测试
@for svc in $(SERVICES); do \
echo "==> Testing $$svc..."; \
cd $$svc && go test ./... -v && cd ..; \
done
lint: ## 代码检查
@for svc in $(SERVICES); do \
echo "==> Linting $$svc..."; \
cd $$svc && go vet ./... && cd ..; \
done
tidy: ## 整理所有模块依赖
@for svc in shared $(SERVICES); do \
echo "==> Tidying $$svc..."; \
cd $$svc && go mod tidy && cd ..; \
done
migrate-up: ## 执行数据库迁移
@echo "==> Running database migrations..."
@PGPASSWORD=$${DB_PASSWORD:-iloom_secret_2024} psql -h localhost -U $${POSTGRES_USER:-iloom} -d $${POSTGRES_DB:-iloom} -f scripts/init-schemas.sql
@echo "==> Migrations complete."
clean: ## 清理构建产物
@for svc in $(SERVICES); do \
rm -rf $$svc/bin; \
done
@echo "==> Cleaned."
dev-%: ## 单独运行指定服务 (如: make dev-gateway)
cd $* && go run ./cmd/
docker-build-%: ## 单独构建指定服务镜像 (如: make docker-build-gateway)
docker-compose build $*
health: ## 检查所有服务健康状态
@echo "Gateway: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/health)"
@echo "Auth: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8081/health)"
@echo "Purchaser: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8082/health)"
@echo "Textile: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8083/health)"
@echo "Washing: $$(curl -s -o /dev/null -w '%{http_code}' http://localhost:8084/health)"