grafana的版本号是放到前端package.json文件里的,相当于前端和后台只有一个地方维护版本号,后台在编译时,通过go build -ldflags -X 注入版本号信息 代码语言:javascript 代码运行次数:0 运行 AI代码解释 go build-ldflags"-w -X main.version=8.1.3 -X main.commit=unknown-dev -X main.buildstamp=1631418042 -...
第3、4、5 行分别用 git 命令拿到本次提交的 commit-id,author,分支名;第 6 行用 “,” 将三者组合成一个字符串;第 8 行用go build命令,设置 ldflags,将变量$SERVICE_INFO注入到包变量codebase/build-x/compile_info.ServiceInfo,这样在 Go 代码中就可以直接用了。 再看看我的 compile_info 包的代码,...
zzh@ZZHPC:~/aaa$ go build-ldflags="-help"./main.go # command-line-arguments usage: link [options] main.o -B note add an ELF NT_GNU_BUILD_ID note when using ELF; use "gobuildid" to generate it from the Go build ID -E entry ...
case 1:不注入变量$ go build -o main main.go $ ./main 0.0.1 1 2 3case 2:注入变量$ go build -ldflags "-X main.Version=0.0.9" -o main main.go $ ./main 0.0.9 1 2 3可以观察到,在编译构建可执行文件时,通过命令,注入main包的Version变量值。
为了对运行程序进行版本追踪,避免各个版本的服务程序混淆,通常的做法为在go build编译的时候程序注入 版本标志、编译时间、当前分支、当前 Tag、当前的提交号等信息,让go程序在运行的时候就可以打印编译时候的参数情况。 go build -ldflags命令 ldflags简介
golang在编译时,通过加入- ldflags的参数可以替换编译的二进制包中的文件内容。例如替换版本号,构建日期,Git commit等信息时很方便。 例如替换main包中的变量如下: package main var version="N/A" func main() { fmt.Println(version) } 编译时加上参数:go build -a -ldflags "-X main.version=1.2" -o...
ldflags 代表链接器标志,用于将标志传递给底层链接器。根据文档:
go build -ldflags "-X 'main.time=$(date -u --rfc-3339=seconds)' -X 'main.git=$(git log --pretty=format:"%h" -1)'" main.go 运行结果: Copy build date:2019-09-12 06:57:45+00:00git hash:e1ac7a6 注意# 只能给string赋值,不能是bool,int ...
BUILD_TIME string GO_VERSION string ) func main() { fmt.Printf("%s\n%s\n%s\n", VERSION, BUILD_TIME, GO_VERSION) } 用如下命令编译,注意因为date和go version的输出有空格,所以main.BUILD_TIME和main.GO_VERSION必须使用引号括起来 go build -ldflags "-X main.VERSION=1.0.0 -X 'main.BUILD_TI...
-ldflags 'flag list' '-s -w': 压缩编译后的体积 -s: 去掉符号表 -w: 去掉调试信息,不能gdb调试了 -linkshared链接到以前使用创建的共享库 -buildmode=shared. -pkgdir dir 从指定位置,而不是通常的位置安装和加载所有软件包。例如,当使用非标准配置构建时,使用-pkgdir将生成的包保留在单独的位置。