猿问

Go:如何将 git 修订版添加到构建的二进制文件中?

我想将当前的 git 修订号添加到构建的二进制文件中,go build以便我可以做一些事情,比如./mybinary --revision查看它是从哪个修订版构建的(通常用于部署后的故障排除)。显然,我不能将修订号放入源代码中,因为这会用新的修订版本更改源代码。我想知道是否有其他方法可以做到这一点?或者你认为这只是一个坏主意?如果是这样,在构建的二进制文件与其源版本之间建立关系的推荐方法是什么?对于分布式版本控制系统,版本号似乎不是一个好主意。


肥皂起泡泡
浏览 226回答 3
3回答

慕盖茨4494581

如果您可以将 git 修订版放入 $VERSION 并version在主包中有一个名为(类型字符串)的变量,则可以在构建期间使用以下命令设置它:#!/bin/shVERSION=`git rev-parse --short HEAD`go build -ldflags "-X main.version=$VERSION"  myfile.go

RISEBY

我会用一个version.go文件创建一个文件,var version string然后在调用之前处理它并在调用go build之后重置它。换句话说,go 不支持任何类型的代码生成,所以你需要依靠外部的东西来做到这一点。

手掌心

对于所有和任何版本的 Git 代码,获取任何变更集的标识字符串的最明显方法(而我将在--revision选项上显示此字符串的任务留给您)是使用(至少偶尔)标签git describe(带有相关选项)在构建阶段
随时随地看视频慕课网APP

相关分类

Go
我要回答