Golang自动生成版本信息

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

原文: Golang自动生成版本信息

需求

golang程序在build时自动生成版本信息,使用 ./helloworld –version可以查看版本和build时间

实现原理

使用链接选项-X设置一个二进制文件中可以访问的变量

  • 实例1:
1
2
3
4
5
6
7
8
package main
import "fmt"
var Version = "No Version Provided"
func main() {
fmt.Println("HelloWorld Version is:", Version)
}
1
2
3
go run -ldflags "-X main.Version 1.5" helloworld.go
HelloWorld Version is: 1.5
  • 实例2
1
2
3
4
5
6
7
8
9
10
package main
import \"fmt\"
var buildstamp = \"no timestamp set\"
var githash = \"no githash set\"
func main() {
fmt.Println(\"HelloWorld buildstamp is:\", buildstamp)
fmt.Println(\"HelloWorld buildgithash is:\", githash)
}
1
2
3
4
5
6
go build -ldflags \"-X main.buildstamp `date \'+%Y-%m-%d_%I:%M:%S\'` -X main.githash `git rev-parse HEAD`\" helloworld.go
./helloworld
HelloWorld buildstamp is: 2015-09-08_05:58:49
HelloWorld buildgithash is: 1adb00d88d832687eb4148a3871829fb73021c29

参考资料
golang-auto-build-versioning


其它一些相关的介绍:

  1. 编译时向 go 程序写入 git 版本信息
  2. command/link
  3. Setting Go variables from the outside

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

本文来自:鸟窝

感谢作者:smallnest

查看原文:Golang自动生成版本信息

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

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