https://jishuin.proginn.com/p/763bfbd6975c
我们的Go项目可以通过 Git 获得版本信息,可以通过 shell 脚本实现,最后编译 Go 项目时,将版本信息通过 -X 传递进去
Go 语言项目
1 2 3 4 5 6 7 8 9 10 11
| package main
import ( "fmt" )
var Version string
func main() { fmt.Println("Version:", Version) }
|
Shell 脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #!/bin/sh
version=""
if [ -f "VERSION" ]; then version=`cat VERSION` fi
if [[ -z $version ]]; then if [ -d ".git" ]; then version=`git symbolic-ref HEAD | cut -b 12-`-`git rev-parse HEAD` else version="unknown" fi fi
go build -ldflags "-X main.Version=$version" main.go
|
设置版本号的步骤
- 如果有 VERSION 文件,读取该文件的值作为版本信息;
- 如果 version 的值是空,判断当前项目是否是 Git 项目。是,则获取版本信息,格式:master-commithash;否则,版本信息设置为 unknown;
- 通过 go build 的 ldflags 传递版本信息给 main.Version;