- 前端: React 18 + TypeScript + Vite + Tailwind CSS + shadcn/ui - 后端: Go + Gin + GORM + JWT (golang-jwt/jwt/v5) - 功能: 服务器管理、K8s集群、监控告警、CI/CD、自动化运维、审批流程、审计日志 - 文档: 设计文档(ROADMAP/PDD/架构/模块)
137 lines
3.5 KiB
Makefile
137 lines
3.5 KiB
Makefile
.PHONY: all build run test clean docker swagger lint fmt vet
|
|
|
|
# 应用名称
|
|
APP_NAME=ezops
|
|
MAIN_FILE=cmd/main.go
|
|
BUILD_DIR=build
|
|
|
|
# Go 参数
|
|
GOCMD=go
|
|
GOBUILD=$(GOCMD) build
|
|
GOCLEAN=$(GOCMD) clean
|
|
GOTEST=$(GOCMD) test
|
|
GOGET=$(GOCMD) get
|
|
GOMOD=$(GOCMD) mod
|
|
|
|
# 版本信息
|
|
VERSION=$(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
BUILD_TIME=$(shell date +%Y-%m-%d_%H:%M:%S)
|
|
GIT_COMMIT=$(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
|
LDFLAGS=-ldflags "-X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME) -X main.GitCommit=$(GIT_COMMIT)"
|
|
|
|
all: test build
|
|
|
|
# 构建应用
|
|
build:
|
|
@echo "Building $(APP_NAME)..."
|
|
@mkdir -p $(BUILD_DIR)
|
|
$(GOBUILD) $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME) $(MAIN_FILE)
|
|
@echo "Build complete: $(BUILD_DIR)/$(APP_NAME)"
|
|
|
|
# 运行应用
|
|
run:
|
|
$(GOCMD) run $(MAIN_FILE)
|
|
|
|
# 开发模式运行(带热重载)
|
|
dev:
|
|
@which air > /dev/null || go install github.com/cosmtrek/air@latest
|
|
air
|
|
|
|
# 运行测试
|
|
test:
|
|
$(GOTEST) -v ./...
|
|
|
|
# 运行测试并生成覆盖率报告
|
|
test-coverage:
|
|
$(GOTEST) -v -coverprofile=coverage.out ./...
|
|
$(GOCMD) tool cover -html=coverage.out -o coverage.html
|
|
@echo "Coverage report generated: coverage.html"
|
|
|
|
# 清理构建产物
|
|
clean:
|
|
$(GOCLEAN)
|
|
@rm -rf $(BUILD_DIR)
|
|
@rm -f coverage.out coverage.html
|
|
@echo "Clean complete"
|
|
|
|
# 下载依赖
|
|
deps:
|
|
$(GOMOD) download
|
|
$(GOMOD) tidy
|
|
|
|
# 更新依赖
|
|
update-deps:
|
|
$(GOGET) -u ./...
|
|
$(GOMOD) tidy
|
|
|
|
# 生成 Swagger 文档
|
|
swagger:
|
|
@which swag > /dev/null || go install github.com/swaggo/swag/cmd/swag@latest
|
|
swag init -g $(MAIN_FILE)
|
|
@echo "Swagger docs generated"
|
|
|
|
# 代码格式化
|
|
fmt:
|
|
$(GOCMD) fmt ./...
|
|
|
|
# 代码检查
|
|
vet:
|
|
$(GOCMD) vet ./...
|
|
|
|
# 运行 linter
|
|
lint:
|
|
@which golangci-lint > /dev/null || go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
golangci-lint run
|
|
|
|
# 安全检查
|
|
security:
|
|
@which gosec > /dev/null || go install github.com/securego/gosec/v2/cmd/gosec@latest
|
|
gosec ./...
|
|
|
|
# 构建 Docker 镜像
|
|
docker-build:
|
|
docker build -t $(APP_NAME):$(VERSION) -t $(APP_NAME):latest .
|
|
|
|
# 运行 Docker 容器
|
|
docker-run:
|
|
docker run -p 8080:8080 -v $(PWD)/config.yaml:/root/config.yaml $(APP_NAME):latest
|
|
|
|
# 停止 Docker 容器
|
|
docker-stop:
|
|
docker stop $(shell docker ps -q --filter ancestor=$(APP_NAME))
|
|
|
|
# 数据库迁移
|
|
migrate:
|
|
$(GOCMD) run $(MAIN_FILE) migrate
|
|
|
|
# 初始化数据库
|
|
init-db:
|
|
@echo "Initializing database..."
|
|
@mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS ezops CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null || true
|
|
@echo "Database initialized"
|
|
|
|
# 生成 Mock 数据
|
|
mock:
|
|
$(GOCMD) run scripts/mock.go
|
|
|
|
# 查看帮助
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " make build - Build the application"
|
|
@echo " make run - Run the application"
|
|
@echo " make dev - Run with hot reload"
|
|
@echo " make test - Run tests"
|
|
@echo " make test-coverage - Run tests with coverage"
|
|
@echo " make clean - Clean build artifacts"
|
|
@echo " make deps - Download dependencies"
|
|
@echo " make update-deps - Update dependencies"
|
|
@echo " make swagger - Generate Swagger docs"
|
|
@echo " make fmt - Format code"
|
|
@echo " make vet - Run go vet"
|
|
@echo " make lint - Run linter"
|
|
@echo " make security - Run security check"
|
|
@echo " make docker-build - Build Docker image"
|
|
@echo " make docker-run - Run Docker container"
|
|
@echo " make init-db - Initialize database"
|
|
@echo " make help - Show this help"
|