golang编译时设定版本号
无论用什么语言写代码,版本是很重要的一个东西。一般来说,用-v或者--version参数来输出程序的版本是一个好办法。话不多说,上代码片段。
package main
import (
"flag"
"fmt"
"os"
)
var VersionStr = "unknown"
func main() {
version := flag.Bool("v", false, "Show Version")
flag.Parse()
if *version {
fmt.Println(VersionStr)
os.Exit(0)
}
}
编译脚本:
#!/bin/bash -xe
function getversion() {
branch=`git rev-parse --abbrev-ref HEAD`
commitid=`git rev-parse --short HEAD`
builddate=`date +%Y%m%d-%H%M%S`
echo $branch-$commitid-$builddate
}
cd `dirname $0`
# use go vendor
export GO15VENDOREXPERIMENT=1
version=`getversion`
pkgpath="github.com/auxten/logrus/examples/basic"
echo "build log-linux"
GOOS=linux GOARCH=amd64 go build -ldflags "-X main.VersionStr=${version}" -o bin/log-linux ${pkgpath}
#echo "build log-osx"
#GOOS=darwin GOARCH=amd64 go build -ldflags "-X main.VersionStr=${version}" -o bin/log-osx ${pkgpath}
#echo "build log-win
#GOOS=windows GOARCH=386 go build -ldflags "-X main.versionStr=${version}" -o bin/log-win ${pkgpath}
echo "done"
这样,就可以把运行./bin/log-linux -v就可以把git分支-commitId-编译时间输出出来了。
版权声明:转载请注明文章来源:Reboot-51
- 如果文章对您有帮助,请关注一下,点个赞吧!