APP_NAME := xiaji-go VERSION := 1.0.0 GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") BUILD_TIME := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') LDFLAGS := -X xiaji-go/version.Version=$(VERSION) \ -X xiaji-go/version.GitCommit=$(GIT_COMMIT) \ -X xiaji-go/version.BuildTime=$(BUILD_TIME) DOCKER_IMAGE := ouaone/xiaji-go DOCKER_TAG := $(VERSION) .PHONY: build clean run docker docker-push release help ## build: 编译二进制文件 build: go build -ldflags "$(LDFLAGS)" -o $(APP_NAME) cmd/main.go ## build-linux: 交叉编译 Linux amd64 build-linux: CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "$(LDFLAGS)" -o $(APP_NAME)-linux-amd64 cmd/main.go ## clean: 清理编译产物 clean: rm -f $(APP_NAME) $(APP_NAME)-linux-amd64 ## run: 编译并运行 run: build ./$(APP_NAME) ## docker: 构建 Docker 镜像 docker: docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) -t $(DOCKER_IMAGE):latest \ --build-arg VERSION=$(VERSION) \ --build-arg GIT_COMMIT=$(GIT_COMMIT) \ --build-arg BUILD_TIME=$(BUILD_TIME) . ## docker-push: 推送 Docker 镜像 docker-push: docker push $(DOCKER_IMAGE):$(DOCKER_TAG) docker push $(DOCKER_IMAGE):latest ## version: 显示版本信息 version: @echo "$(APP_NAME) v$(VERSION) ($(GIT_COMMIT))" ## help: 显示帮助 help: @echo "$(APP_NAME) v$(VERSION)" @echo "" @echo "可用目标:" @grep -E '^## ' Makefile | sed 's/^## / /'