.PHONY: build run dev test clean install docker # 项目信息 PROJECT_NAME := giteapm BINARY_NAME := giteapm VERSION := $(shell git describe --tags --always --dirty) BUILD_TIME := $(shell date +%Y-%m-%d\ %H:%M:%S) GO_VERSION := $(shell go version | cut -d ' ' -f 3) # 构建参数 LDFLAGS := -X 'main.Version=$(VERSION)' \ -X 'main.BuildTime=$(BUILD_TIME)' \ -X 'main.GoVersion=$(GO_VERSION)' # 默认目标 all: build # 安装依赖 install: go mod download go mod tidy # 构建 build: go build -ldflags "$(LDFLAGS)" -o bin/$(BINARY_NAME) cmd/main.go # 运行 run: build ./bin/$(BINARY_NAME) -config config/config.yaml # 开发模式运行 dev: go run cmd/main.go -config config/config.yaml # 运行测试 test: go test -v ./... # 代码检查 lint: golangci-lint run # 清理 clean: rm -rf bin/ go clean # 数据库迁移 migrate-up: mysql -u root -p < schema.sql # Docker 构建 docker-build: docker build -t $(PROJECT_NAME):$(VERSION) . docker tag $(PROJECT_NAME):$(VERSION) $(PROJECT_NAME):latest # Docker 运行 docker-run: docker-compose up -d # Docker 停止 docker-stop: docker-compose down # 帮助 help: @echo "可用命令:" @echo " install - 安装依赖" @echo " build - 构建应用" @echo " run - 运行应用" @echo " dev - 开发模式运行" @echo " test - 运行测试" @echo " lint - 代码检查" @echo " clean - 清理构建文件" @echo " migrate-up - 数据库迁移" @echo " docker-build - Docker 构建" @echo " docker-run - Docker 运行" @echo " docker-stop - Docker 停止"