on
Populating go vars at build time
When we build go executables, one common command is the version command. It should tell you the commit, version number etc of the released executable. However, we don’t want to hardcode these in code. We want to populate these variables at build time. Here is a common pattern that will let you do this.
Let’s assume you have a main.go that imports a package version and prints out the output of version.GetBuildInfo().
The version.go is a very simple file:
|
|
In order to populate the buildVersion, buildGitRevision, buildTag variables at build time, we will be using the -ldflags argument to the go build tool when building. Assuming you are using a Makefile in your root to build your project, add a target like this:
|
|
Now you can build your project via make build. If you run the generated main executable, you will see that the version, tag and revision values are taken from the Makefile i.e. at build time.
You can view a fully working example on github.