Go workspace (go.work) with 5 microservices + shared library: - gateway (8080), auth-service (8081), purchaser-service (8082) - textile-service (8083), washing-service (8084) - shared: proto definitions, common packages Infrastructure: docker-compose for local dev, K8s manifests for K3s cluster deployment (mysql/redis/etcd + traefik ingress). Frontend (iloom-flatten) added as git submodule. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
75 lines
2.4 KiB
Makefile
75 lines
2.4 KiB
Makefile
.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)"
|