Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
version
README.md
build.sh
main.go

README.md

使用 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
You can’t perform that action at this time.