昨天跑得好好的程序突然出了问题,查看它的版本号,机器冷冰冰地告诉你👇
1.0.12
那么,同样的场景下,机器告诉你的信息是这样,那debug是否容易多了呢?!
gbb
安装
$ go get -u github.com/voidint/gbb复制代码
$ cd $GOPATH/src/github.com/voidint/gbb && go install
复制代码
基本使用
gbbgbb
./gbbgbb
gbbgo build/installgb
准备
gbb
gbb.jsongbb.json
$ rm -f gbb.json
复制代码
gbb
对go install/build、gb等golang编译工具进行包装,使编译得到的二进制文件的版本信息中包含编译时间戳、git commit等信息。
gbb
v0.0.1gbbgitcommitv0.0.1debug
step0
编译时间commit号
package build
var (
Date string
Commit string
)
复制代码
然后,在代码中打印版本号的位置上将这些信息格式化输出,类似👇
step1
gbb initgbb.json
合适的地方指哪些地方?一般规律是这样:
go build/installgbb inittoolmaingb
gbb initgbb.json
gbb.json
step2
gbb.jsongbb.jsongbb init
$ gbb --debug
==> go build -ldflags '-X "github.com/voidint/gbb/build.Date=2016-12-17T22:18:32+08:00" -X "github.com/voidint/gbb/build.Commit=db8b606cfc2b24a24e2e09acac24a52c47b68401"'
复制代码
编译完后在目录下多出一个编译后的二进制文件,接着打印版本信息,看看是否实现我们设定的目标了。
$ ./gbb version
gbb version v0.0.1
date: 2016-12-17T22:18:32+08:00
commit: db8b606cfc2b24a24e2e09acac24a52c47b68401
复制代码
😊
gbb.json
gbb.jsongbbgbb initnpm init
versiontoolgo_buildgo_installgb_build_pakcageDateCommitgithub.com/voidint/gbb/buildvariablesvariablevaluevariableDatevalue{{.date}}