【发布时间】:2022-01-21 18:44:54
【问题描述】:
我想在构建时将已编译的二进制信息嵌入到传递给构建过程的信息中(通常是一个字符串,特别是在我的 CI/CD 执行期间的提交哈希)。
然后我想简单地用fmt.Sprintf("%v", thisEmbeddedString)显示它。
我希望 embed 包是一个解决方案,但它似乎只适用于文件。
【问题讨论】:
-
使用 Go 1.18,您可以直接从二进制文件中获取 VCS 版本:
go version -m file <filename>。您需要使用完整的主包路径构建二进制文件,而不是通过在命令行上构建单个文件。 (go build .而不是go build main.go)或者从您的代码中使用info, _ := debug.ReadBuildInfo(); fmt.Println(info.Settings)git 提交将在Keyvcs.revision下。