version-v
示例
比如我们常用的 Golang 开发的程序是这样输出版本相关信息的:
从上面的版本输出记录中我们其实可以看出,版本信息中不仅记录了基本的构建环境和版本信息,同时还记录了 commitId,所以这些信息应该是在 build 时动态传入到程序中的,大概猜测一下应该就是提前在程序的 version 相关代码中预留好版本相关的变量,然后在构建的时候对变量进行赋值,以此来实现变量的动态注入。
小试牛刀
-ldflags -X importpath.name=value
-X
所以,总结起来就是,可以使用该参数给源码中动态传入一些简单的字符串变量。
接下来,我们简单试用一下:
如上示例中简单演示了,如何在构建时,给程序注入一些版本相关的信息,这样我们在每次发版时,就可以根据当前的版本、环境、构建等信息为程序注入一个详细的版本信息了。
项目中使用
-ldflags -X importpath.name=value
Makefile
Makefile
dockerkubectlkubectl
上面的示例代码,我放到了 go-version 中了,有需要的小伙伴可以去看看。
