使用 go build 修改go代码中的变量

使用 go build 修改go代码中的变量

1. 需求场景

编译 go 相关代码的时候,可能需要在编译的版本中添加 编译的 git commit sha1、编译时间等各种随着编译变化的信息。

package version

var (  
    Version   = "Not Provide"
    BuildTime = "Not Provide"
    GitSHA    = "Not Provide"
)

在编译的时候需要根据编译的 git sha1或者 version 实时进行替换

2. 实现方式

go build 中 可以通过 ldconfig 在编译过程中实时修改 pkg version 变量值,来达到上述目的:

main.go

package main

import "fmt"
import "my_version/version"

var Version = "not provider"

func  main() {
    fmt.Println(Version)
    fmt.Println(version.GitSHA)
}

version/version.go

package version

var GitSHA="Not provide"

build.sh

#!/bin/bash
set -x

export GOPATH="`pwd`/../.."

GIT_SHA=`git rev-parse --short HEAD`
VERSION="0.1"

go build -ldflags " -X main.Version=${VERSION} -X my_version/version.GitSHA=${GIT_SHA}" main.go

3. 源码

my_version

发表评论

电子邮件地址不会被公开。 必填项已用*标注