feat: 编译时嵌入版本信息
- 添加版本显示功能 (--version 参数) - 编译时注入 Version、BuildTime、GitCommit、GoVersion、BuildEnv - 更新 Makefile 支持自动获取版本信息 - 添加 release-full 命令支持完整发布流程 - 启动时显示构建信息
This commit is contained in:
60
Makefile
60
Makefile
@@ -1,9 +1,16 @@
|
||||
.PHONY: all build clean run test docker-build docker-run install-dev help
|
||||
.PHONY: all build clean run test docker-build docker-run install-dev help release
|
||||
|
||||
# 应用名称
|
||||
APP_NAME := sms-receiver-v2
|
||||
MAIN_FILE := main.go
|
||||
|
||||
# 版本信息
|
||||
VERSION := v2.0.0
|
||||
BUILD_TIME := $(shell date +%Y-%m-%d\ %H:%M:%S)
|
||||
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
|
||||
GO_VERSION := $(shell go version | awk '{print $$3}')
|
||||
BUILD_ENV := prod
|
||||
|
||||
# Go 配置
|
||||
GO := go
|
||||
GOFMT := gofmt
|
||||
@@ -12,7 +19,7 @@ GOTEST := go test
|
||||
|
||||
# 构建配置
|
||||
BUILD_DIR := ./build
|
||||
LDFLAGS := -ldflags="-w -s"
|
||||
LDFLAGS := -ldflags="-X 'main.Version=$(VERSION)' -X 'main.BuildTime=$(BUILD_TIME)' -X 'main.GitCommit=$(GIT_COMMIT)' -X 'main.GoVersion=$(GO_VERSION)' -X 'main.BuildEnv=$(BUILD_ENV)' -w -s"
|
||||
|
||||
# Docker 配置
|
||||
DOCKER_IMAGE := sms-receiver-go
|
||||
@@ -110,3 +117,52 @@ init:
|
||||
else \
|
||||
echo "config.yaml 已存在"; \
|
||||
fi
|
||||
|
||||
## release: 发布版本(创建 tag、推送到远程、上传二进制文件)
|
||||
release: clean build
|
||||
@echo "正在发布版本: $(VERSION)"
|
||||
@if [ -z "$(VERSION)" ]; then \
|
||||
echo "错误: 请指定 VERSION,例如: make release VERSION=v2.0.0"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@git tag -a $(VERSION) -m "Release $(VERSION)" || echo "Tag 已存在,继续..."
|
||||
@git push origin $(VERSION) || echo "Tag 已推送"
|
||||
@echo "请在 Gitea 上手动上传二进制文件到 Release: $(VERSION)"
|
||||
@echo "或者使用: make release-upload VERSION=$(VERSION)"
|
||||
|
||||
## release-upload: 上传二进制文件到 Gitea Release
|
||||
release-upload:
|
||||
@echo "上传二进制文件到 Gitea Release: $(VERSION)"
|
||||
@if [ ! -f $(APP_NAME) ]; then \
|
||||
echo "错误: 找不到编译文件 $(APP_NAME),请先运行 make build"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@if [ -z "$(GITEA_TOKEN)" ]; then \
|
||||
echo "错误: 请设置环境变量 GITEA_TOKEN"; \
|
||||
echo "用法: make release-upload VERSION=v2.0.0 GITEA_TOKEN=your_token"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo "正在上传 $(APP_NAME) 到 Gitea..."
|
||||
@curl -X POST \
|
||||
-H "Authorization: token $(GITEA_TOKEN)" \
|
||||
-F "attachment=@$(APP_NAME)" \
|
||||
"https://gitea.king.nyc.mn/api/v1/repos/openclaw/SmsReceiver-go/releases/$(VERSION)/assets" \
|
||||
2>&1 | grep -E "(name|size|browser_download_url)" || echo "上传完成"
|
||||
@echo "✅ 上传完成!"
|
||||
|
||||
## release-full: 完整发布流程(编译、tag、推送、上传)
|
||||
release-full: clean build
|
||||
@echo "完整发布流程: $(VERSION)"
|
||||
@if [ -z "$(VERSION)" ] || [ -z "$(GITEA_TOKEN)" ]; then \
|
||||
echo "用法: make release-full VERSION=v2.0.0 GITEA_TOKEN=your_token"; \
|
||||
exit 1; \
|
||||
fi
|
||||
@echo "1. 创建并推送 Git tag..."
|
||||
@git tag -a $(VERSION) -m "Release $(VERSION)"
|
||||
@git push origin $(VERSION)
|
||||
@echo "2. 上传二进制文件到 Gitea Release..."
|
||||
@curl -X POST \
|
||||
-H "Authorization: token $(GITEA_TOKEN)" \
|
||||
-F "attachment=@$(APP_NAME)" \
|
||||
"https://gitea.king.nyc.mn/api/v1/repos/openclaw/SmsReceiver-go/releases/$(VERSION)/assets"
|
||||
@echo "✅ 发布完成!访问: https://gitea.king.nyc.mn/openclaw/SmsReceiver-go/releases/tag/$(VERSION)"
|
||||
|
||||
Reference in New Issue
Block a user