feat: 编译时嵌入版本信息

- 添加版本显示功能 (--version 参数)
- 编译时注入 Version、BuildTime、GitCommit、GoVersion、BuildEnv
- 更新 Makefile 支持自动获取版本信息
- 添加 release-full 命令支持完整发布流程
- 启动时显示构建信息
This commit is contained in:
OpenClaw Agent
2026-02-08 19:20:24 +08:00
parent 28f2c2aec7
commit d34d1119dd
2 changed files with 110 additions and 2 deletions

52
main.go
View File

@@ -2,6 +2,7 @@ package main
import (
"flag"
"fmt"
"log"
"net/http"
"os"
@@ -18,10 +19,61 @@ import (
"github.com/robfig/cron/v3"
)
// 编译时注入的版本信息
var (
Version = "dev" // 版本号
BuildTime = "unknown" // 构建时间
GitCommit = "unknown" // Git commit hash
GoVersion = "unknown" // Go 版本
BuildEnv = "dev" // 构建环境dev/prod
)
func printVersion() {
fmt.Printf("SmsReceiver-go %s\n", Version)
fmt.Printf(" Version: %s\n", Version)
fmt.Printf(" Build Env: %s\n", BuildEnv)
fmt.Printf(" Build Time: %s\n", BuildTime)
fmt.Printf(" Git Commit: %s\n", GitCommit)
fmt.Printf(" Go Version: %s\n", GoVersion)
fmt.Printf(" Repository: https://gitea.king.nyc.mn/openclaw/SmsReceiver-go\n")
}
func main() {
// 检查是否请求版本信息(需要在 flag.Parse 之前)
for _, arg := range os.Args[1:] {
if arg == "--version" || arg == "-v" {
printVersion()
os.Exit(0)
} else if arg == "--help" || arg == "-h" {
fmt.Println("SmsReceiver-go - 短信转发接收端 Go 版本")
fmt.Println()
fmt.Println("Usage:")
fmt.Println(" sms-receiver-v2 [options]")
fmt.Println()
fmt.Println("Options:")
flag.PrintDefaults()
fmt.Println()
fmt.Println("Additional Options:")
fmt.Println(" -v, --version 显示版本信息")
fmt.Println(" -h, --help 显示帮助信息")
os.Exit(0)
}
}
// 记录启动时间
startTime := time.Now()
// 打印启动信息
log.Printf("========================================")
log.Printf("SmsReceiver-go v%s (%s)", Version, BuildEnv)
log.Printf("========================================")
log.Printf("Version: %s", Version)
log.Printf("Build Env: %s", BuildEnv)
log.Printf("Build Time: %s", BuildTime)
log.Printf("Git Commit: %s", GitCommit)
log.Printf("Go Version: %s", GoVersion)
log.Printf("========================================")
// 命令行参数
configPath := flag.String("config", "config.yaml", "配置文件路径")
templatesPath := flag.String("templates", "templates", "模板目录路径")