Go Application Versioning: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 18: Line 18:


The <code>go build</code> command passes dynamically-generated version information to the linker. For more details, see: {{Internal|Go_build#-ldflags|<tt>go build -ldflags</tt>}}
The <code>go build</code> command passes dynamically-generated version information to the linker. For more details, see: {{Internal|Go_build#-ldflags|<tt>go build -ldflags</tt>}}
=Write a Dedicated <code>version</code> Package=

Revision as of 23:11, 1 March 2024

External

Internal

Overview

Write an Authoritative Source of Version Information Script

The version information for a build should be generate in just one place. A shell script is probably the most versatile. Write a script that generate the version label at stdout and name it ${PROJECT_DIR}/scripts/get-version.sh.

Pass the Version Information as a Linker Argument

version = $(shell $(CURDIR)/scripts/get-version.sh)

...

build: ...
	@go build -ldflags="-X 'example.com/myapp/internal/version.Version=$(version)'" ...

The go build command passes dynamically-generated version information to the linker. For more details, see:

go build -ldflags

Write a Dedicated version Package