登录
首页 >  Golang >  Go问答

在运行“go get path/to/myapp”命令时,我能够获取正确的版本和构建信息吗?

来源:stackoverflow

时间:2024-03-09 18:24:26 280浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《在运行“go get path/to/myapp”命令时,我能够获取正确的版本和构建信息吗?》,聊聊,我们一起来看看吧!

问题内容

我需要在 go 应用生成的输出中提供版本号。 对于发布和本地构建,我使用具有以下内容的 makefile:

...
version = $(shell git describe --tags)
ver = $(shell git describe --tags --abbrev=0)
date = $(shell date -u '+%y-%m-%d_%h:%m:%s%z')
...
flags_ld=-ldflags "-x path/to/myapp/mypkg.build=${date} \
                  -x path/to/myapp/mypkg.version=${version}"
...
gocmd = go
gobuild = $(gocmd) build $(flags_ld)
goinstall = $(gocmd) install $(flags_ld)
...

在包中我有变量

package mypkg

var (
    Version = "v0.11.0-dev"
    Build   string
)

当我通过 make 运行构建、安装或发布时一切都很好,但是如果我运行 go get path/to/myapp 然后 -ldflags 为空并且用户获取过时的版本信息,并且 没有构建信息。

使用 go get 安装程序时是否有办法获取正确的 ldflags 数据?


解决方案


不,下载源代码时无法读取/写入 ldflags

go get 旨在从源安装。

使用 go get 安装程序时有没有办法获取正确的 ldflags 数据?

目前的答复是否定的。

是的,您可以向用户提供软件包的版本

实现您想要做的事情的最简单方法是:

  1. 如果您要共享的是lib(可重用代码),请将 git 标签添加到您的源存储库,以便您的开发用户可以使用它进行包版本管理。 (glide、go.mod、dep、...)。

  2. 如果您要共享的是程序(仅用于编译和执行),请在每次发布新版本时修改 Version 的值。您可以使用 git-hookssed 的组合非常轻松地自动执行此操作。

没有。

好了,本文到此结束,带大家了解了《在运行“go get path/to/myapp”命令时,我能够获取正确的版本和构建信息吗?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>