etcd学习笔记1

打倒美帝 · · 594 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

今天看etcd代码时发现打印版本信息的代码,追踪发现其中的GitSHA是通过编译传进来的值。

 26 var (
 27     // MinClusterVersion is the min cluster version this etcd binary is compatible with.
 28     MinClusterVersion = "3.0.0"
 29     Version           = "3.5.0-pre"
 30     APIVersion        = "unknown"
 31
 32     // Git SHA Value will be set during build
 33     GitSHA = "Not provided (use ./build instead of go build)"
 34 )

执行结果如下所示:

(ENV) ???? /Users/xsky/go/src/github.com/etcd-io/etcd ☞ git:(test) ✗ ./bin/etcd --version
etcd Version: 3.5.0-pre
Git SHA: 9b6c3e337
Go Version: go1.14.3
Go OS/Arch: darwin/amd64

在编译时使用参数-ldflags -X importpath.name=value

-X importpath.name=value
Set the value of the string variable in importpath named name to value.
This is only effective if the variable is declared in the source code either uninitialized
or initialized to a constant string expression. -X will not work if the initializer makes
a function call or refers to other variables.
Note that before Go 1.5 this option took two separate arguments.

使用如下:

  7 GIT_SHA=$(git rev-parse --short HEAD || echo "GitNotFound")
  8 if [[ -n "$FAILPOINTS" ]]; then
  9     GIT_SHA="$GIT_SHA"-FAILPOINTS
 10 fi
 11
 12 # Set GO_LDFLAGS="-s" for building without symbols for debugging.
 13 GO_LDFLAGS="$GO_LDFLAGS -X ${REPO_PATH}/version.GitSHA=${GIT_SHA}"
.....
 78     for tool in ${tools_path}
 79     do
 80         echo "Building" "'${tool}'"...
 81         # shellcheck disable=SC2086
 82         CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} \
 83           -installsuffix cgo \
 84           -ldflags "${GO_LDFLAGS}" \
 85           -o "${out}/${tool}" "${REPO_PATH}/${tool}" || return
 86     done

顺便发现一个小bug:https://github.com/etcd-io/etcd/issues/11958

References


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:打倒美帝

查看原文:etcd学习笔记1

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

594 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传