Files

115 lines
2.6 KiB
Makefile

.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)"