Golang应用程序自动构建版本

每次编译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,它将包含空字符串。

http://stackoverflow.com/questions/11354518/golang-application-auto-build-versioning

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:Golang应用程序自动构建版本