【问题标题】:How to embed a string in the compiled binary at build time? [duplicate]如何在构建时将字符串嵌入到编译的二进制文件中? [复制]
【发布时间】: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 提交将在Key vcs.revision 下。

标签: go build embed


【解决方案1】:

在您的代码中声明一个变量(在下面的示例中,在main 中,它将在下一步中设置)

var commit string

在构建中添加一个标志

go build -ldflags "-X main.commit=$GIT_COMMIT"

然后您可以照常访问该变量

log.Info().Msgf("commit → %v", commit)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多