undefined

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;