teleport/version.mk
Jakub Nyckowski 32673f7eca
Build version checker - multiple fixes (#30580)
* Build version checker - multiple fixes

In several files, the command 'go run' has been updated to 'CC=gcc go run'. This ensures that gcc is used when compiling the Go code, to provide better cross platform support. Prior to this change, the Go compiler was making platform specific builds.

This was a significant issue with the 'kube operator' goal where the built binary could not operate across different platforms.

The change has been applied consistently throughout the codebase in 'Makefile', 'container_image_triggers.go', 'version.mk', 'os_repos.go', and 'build.assets/Makefile' files. Compliance with this new standard should be maintained going forward for any new compilation requests.

* Update .drone.yml

* Replace CC=gcc environment variable with CGO_ENABLED=0

The CC=gcc environment variable was replaced with CGO_ENABLED=0 as CGO is not needed.

* Update .drone.yml
2023-08-16 23:26:41 +00:00

63 lines
2.8 KiB
Makefile

GITREF=$(shell git describe --long --tags)
# $(VERSION_GO) will be written to version.go
VERSION_GO="// Code generated by \"make version\". DO NOT EDIT.\n\
package teleport\n\n\
const Version = \"$(VERSION)\"\n\n\
// Gitref is set to the output of \"git describe\" during the build process.\n\
var Gitref string\n"
# $(API_VERSION_GO) will be written to api/version.go
API_VERSION_GO="// Code generated by \"make version\". DO NOT EDIT.\n\
package api\n\n\
const Version = \"$(VERSION)\"\n\n\
// Gitref is set to the output of \"git describe\" during the build process.\n\
var Gitref string\n"
# $(UPDATER_VERSION_GO) will be written to api/version.go
UPDATER_VERSION_GO="// Code generated by \"make version\". DO NOT EDIT.\n\
package kubeversionupdater\n\n\
const Version = \"$(VERSION)\"\n\n\
// Gitref is set to the output of \"git describe\" during the build process.\n\
var Gitref string\n"
# $(GITREF_GO) will be written to gitref.go
GITREF_GO="// Code generated by \"make version\". DO NOT EDIT.\n\
package teleport\n\n\
func init() { Gitref = \"$(GITREF)\" }\n"
#
# setver updates version.go and gitref.go with VERSION and GITREF vars
#
.PHONY:setver
setver: validate-semver helm-version tsh-version
@printf $(VERSION_GO) | gofmt > version.go
@printf $(API_VERSION_GO) | gofmt > ./api/version.go
@printf $(UPDATER_VERSION_GO) | gofmt > ./integrations/kube-agent-updater/version.go
@printf $(GITREF_GO) | gofmt > gitref.go
# helm-version automatically updates the versions of Helm charts to match the version set in the Makefile,
# so that chart versions are also kept in sync when the Teleport version is updated for a release.
# If the version contains '-dev' (as it does on the master branch, or for development builds) then we get the latest
# published major version number by parsing a sorted list of git tags instead, to make deploying the chart from master
# work as expected. Version numbers are quoted as a string because Helm otherwise treats dotted decimals as floats.
# The weird -i usage is to make the sed commands work the same on both Linux and Mac. Test on both platforms if you change it.
.PHONY:helm-version
helm-version:
for CHART in teleport-cluster teleport-kube-agent teleport-cluster/charts/teleport-operator; do \
sed -i'.bak' -e "s_^\\.version:\ .*_.version: \\&version \"$${VERSION}\"_g" examples/chart/$${CHART}/Chart.yaml || exit 1; \
rm -f examples/chart/$${CHART}/Chart.yaml.bak; \
done
TSH_APP_PLISTS := $(wildcard build.assets/macos/*/tsh.app/Contents/Info.plist)
PLIST_FILES := $(abspath $(TSH_APP_PLISTS))
# tsh-version sets CFBundleVersion and CFBundleShortVersionString in the tsh{,dev} Info.plist
.PHONY:tsh-version
tsh-version:
cd build.assets/tooling && go run ./cmd/update-plist-version $(VERSION) $(PLIST_FILES)
.PHONY:validate-semver
validate-semver:
cd build.assets/tooling && CGO_ENABLED=0 go run ./cmd/check -check valid -tag v$(VERSION)