gbb

昨天跑得好好的程序突然出了问题,查看它的版本号,机器冷冰冰地告诉你👇

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}}