.PHONY: build clean test docker run scheduler agent help # 项目名称 PROJECT_NAME := proxy-platform VERSION := 1.0.0 BUILD_DIR := bin # Go 参数 GO := go GOFLAGS := -v LDFLAGS := -ldflags "-s -w -X main.Version=$(VERSION)" # Docker 参数 DOCKER := docker DOCKER_COMPOSE := docker-compose # 默认目标 .DEFAULT_GOAL := help ## build: 构建所有组件 build: scheduler agent ## scheduler: 构建调度中心 scheduler: @echo "构建调度中心..." @mkdir -p $(BUILD_DIR) $(GO) build $(GOFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/scheduler ./cmd/scheduler ## agent: 构建节点 Agent agent: @echo "构建节点 Agent..." @mkdir -p $(BUILD_DIR) $(GO) build $(GOFLAGS) $(LDFLAGS) -o $(BUILD_DIR)/agent ./cmd/agent ## clean: 清理构建产物 clean: @echo "清理构建产物..." @rm -rf $(BUILD_DIR) @rm -f coverage.out ## test: 运行测试 test: @echo "运行测试..." $(GO) test -v -race -coverprofile=coverage.out ./... ## test-coverage: 查看测试覆盖率 test-coverage: test $(GO) tool cover -html=coverage.out ## docker: 构建 Docker 镜像 docker: @echo "构建 Docker 镜像..." $(DOCKER) build -t $(PROJECT_NAME)-scheduler:$(VERSION) -f deployments/Dockerfile.scheduler . $(DOCKER) build -t $(PROJECT_NAME)-agent:$(VERSION) -f deployments/Dockerfile.agent . ## docker-compose-up: 使用 Docker Compose 启动 docker-compose-up: @echo "启动服务..." $(DOCKER_COMPOSE) -f deployments/docker-compose.yml up -d ## docker-compose-down: 停止 Docker Compose 服务 docker-compose-down: @echo "停止服务..." $(DOCKER_COMPOSE) -f deployments/docker-compose.yml down ## docker-compose-logs: 查看 Docker Compose 日志 docker-compose-logs: $(DOCKER_COMPOSE) -f deployments/docker-compose.yml logs -f ## run-scheduler: 本地运行调度中心 run-scheduler: @echo "运行调度中心..." $(GO) run ./cmd/scheduler ## run-agent: 本地运行节点 Agent run-agent: @echo "运行节点 Agent..." $(GO) run ./cmd/agent ## deps: 安装依赖 deps: @echo "安装依赖..." $(GO) mod download $(GO) mod tidy ## lint: 运行代码检查 lint: @echo "运行代码检查..." @golangci-lint run ./... ## fmt: 格式化代码 fmt: @echo "格式化代码..." $(GO) fmt ./... ## migrate-up: 运行数据库迁移 migrate-up: @echo "运行数据库迁移..." $(GO) run ./cmd/scheduler migrate ## help: 显示帮助信息 help: @echo "代理管理平台 Makefile" @echo "" @echo "使用方法:" @echo " make [target]" @echo "" @echo "目标:" @sed -n 's/^## / /p' $(MAKEFILE_LIST) | column -t -s ':' # 显示变量 show-vars: @echo "PROJECT_NAME: $(PROJECT_NAME)" @echo "VERSION: $(VERSION)" @echo "BUILD_DIR: $(BUILD_DIR)"