go build -ldflags "-X 'main.buildTime=$(date)' -X 'main.gitHash=$(git log --pretty=format:"%h" -1)'" main.go linux: Copy go build -ldflags "-X 'main.time=$(date -u --rfc-3339=seconds)' -X 'main.git=$(git log --pretty=format:"%h" -1)'" main.go 运行结果: Copy b...
mkdir -p bin/ && VERSION=$(git describe --tags --always) && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./... 这种多条命令,使用&&符号拼接起来,不易于维护,通常我们将它写在shell脚本里或者Makefile中,这不是我们本文讨论重点,下面以Makefile为例 VERSION=$(shell git describe ...
grafana的版本号是放到前端package.json文件里的,相当于前端和后台只有一个地方维护版本号,后台在编译时,通过go build -ldflags -X 注入版本号信息 代码语言:javascript 复制 go build-ldflags"-w -X main.version=8.1.3 -X main.commit=unknown-dev -X main.buildstamp=1631418042 -X main.buildBranch=main"-...
LDFLAGS:=-ldflags"-X 'github.com/pubgo/xxx/version.GoVersion=${GoVersion}' \ -X 'github.com/pubgo/xxx/version.BuildTime=${BuildTime}' \ -X 'github.com/pubgo/xxx/version.GoPath=${GOPATH}' \ -X 'github.com/pubgo/xxx/version.CommitID=${CommitID}' \ -X 'github.com/pubgo/xxx...
golang包的使用依赖一个重要的环境变量:GOPATH,无论是自己的代码还是第三方代码,都以GOPATH作为工作...
而不仅仅是包名。例如,如果您的config软件包位于$GOPATH/src/my/package/config,则使用以下命令:...
本文主要就是解决这个问题,利用 go build 的 -ldflags -X, 把程序及相关的环境信息编译进项目的的help信息中,当程序执行-v时,有如下的输出: $ ./bin/version-example -v BuildTime: 202104201738 BuildGitBranch: master BuildGitCommit: da06480
或者将这些信息写入代码中,这样不需要额外的version.conf,但要在每次编译时修改代码文件,也够麻烦的了。 有一种更好的办法是在编译时使用参数-ldflags -X importpath.name=value,官方解释如下 -X importpath.name=value Set the value of the string variable in importpath named name to value. ...
ldflags 代表链接器标志,用于将标志传递给底层链接器。根据文档:
在go build 命令里有一个-ldflags参数,该参数可以接收-Ximportpath.name=value形式的值,该值就是实现信息动态注入的核心入口。 以下面一段例子来演示 先定义 version,buildTime,osArch 三个变量 然后将这三个变量的值打印出来 packagemainimport"fmt"var(versionstringbuildTimestringosArchstring)funcmain(){fmt.Pr...