Go Application Versioning: Difference between revisions
Jump to navigation
Jump to search
Line 10: | Line 10: | ||
<syntaxhighlight lang='make'> | <syntaxhighlight lang='make'> | ||
version = $(shell $(CURDIR)/scripts/get-version.sh) | version = $(shell $(CURDIR)/scripts/get-version.sh) | ||
... | |||
build: ... | |||
@go build -ldflags="-X 'example.com/myapp/internal/version.Version=$(version)'" ... | |||
</syntaxhighlight> | </syntaxhighlight> | ||
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>}} |
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: