回答

收藏

应用程序自动构建版本控制

技术问答 技术问答 275 人阅读 | 0 人回复 | 2023-09-12

每次编译 Go 次要版本号可以自动添加到应用程序中吗?$ [) t6 {9 F" w7 J) b
我想在我的程序中设置一个版本号,并且有一个自动递增部分:; h/ k' F4 Y7 N3 f/ l
    $ myapp -versionMyApp version 0.5.132
    & f* e% ~# [: Y+ h0 X6 y$ \" T
0.5 是我设置的版本号,132 是每次编译二进制文件时自动增加的值。
$ y0 {" @# B% \1 a这在 Go 中有可能吗?: F* H& y( n1 @9 z  s; k4 f2 `! L, G0 u
                                                               
1 R) d/ `( q* T& R    解决方案:                                                               
9 d; ~  W& q7 o. H/ W                                                                Go 链接器(go tool link)设置未初始化字符串变量的值有一个选项:# w- X/ M- F6 I+ ~9 T( g8 g
golang-X importpath.name=value  Set the value of the string variable in importpath named name to
8 j7 X; w+ `7 l0 T) i价值。请注意,在 Go 1.在5 之前,该选项使用两个单独的参数。现在它需要在第一个 = 在符号上拆分一个参数。
) X3 S, m% ]# p* d3 ~0 Y5 v作为构建过程的一部分,您可以使用它设置字符串变量的版本。go使用-ldflags. 例如,给出以下源文件:0 T( U4 v! b" f# z' f
    package mainimport "fmt"var xyz stringfunc main()      fmt.Println(xyz)}
    ' S+ @5 D5 s/ d. E5 b9 K" d" F
然后:0 l5 S# W0 |! h  }4 Z
    $ go run -ldflags "-X main.xyz=abc" main.goabc
    , \% k' X0 N8 U6 q$ m# ]+ @
为了main.minversion施工时设置施工日期和时间:* Z0 q! V9 F7 U' U' e
    go build -ldflags "-X main.minversion=`date -u  .%Y%m%d.%H%M%S`" service.go
    1 A/ p3 p8 I+ e
如果不main.minversion以这种方式初始化编译,它将包含空字符串。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则