每次编译Go应用程序时,是否可以自动递增次要版本号?
我想在我的程序中设置一个版本号,带有一个自动增量部分:
$ myapp -version MyApp version 0.5.132
为0.5,我设置的版本号,和132每当二进制编译时自动递增的值。
这是可能在Go吗?
Go链接器(
go tool link)具有设置未初始化的字符串变量的值的选项:
-X importpath.name=value Set the value of the string variable in importpath named name to value. Note that before Go 1.5 this option took two separate arguments. Now it takes one argument split on the first = sign.
作为构建过程的一部分,您可以使用this设置一个版本字符串变量。你可以通过go工具使用-ldflags传递。例如,给定以下源文件:
package main import "fmt" var xyz string func main() { fmt.Println(xyz) }
然后:
$ go run -ldflags "-X main.xyz=abc" main.go abc
为了将main.minversion设置为构建日期和时间,建立时:
go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go
如果编译时没有以这种方式初始化main.minversion,它将包含空字符串。