diff --git a/Makefile b/Makefile index 5f3f2837..4bbb2b08 100644 --- a/Makefile +++ b/Makefile @@ -84,6 +84,7 @@ GOOS=linux PACKAGE=github.com/kubernetes-sigs/node-feature-discovery-operator MAIN_PACKAGE=main.go BIN=node-feature-discovery-operator +LDFLAGS = -ldflags "-s -w -X sigs.k8s.io/node-feature-discovery-operator/pkg/version.version=$(VERSION)" PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) @@ -100,7 +101,7 @@ go_mod: # Build binary build: go_mod - @GOOS=$(GOOS) GO111MODULE=on CGO_ENABLED=0 $(GO_CMD) build -o $(BIN) $(MAIN_PACKAGE) + @GOOS=$(GOOS) GO111MODULE=on CGO_ENABLED=0 $(GO_CMD) build -o $(BIN) $(LDFLAGS) $(MAIN_PACKAGE) # Run against the configured Kubernetes cluster in ~/.kube/config run: generate fmt vet manifests diff --git a/main.go b/main.go index 7a661fd3..0aec57a9 100644 --- a/main.go +++ b/main.go @@ -22,7 +22,6 @@ import ( "os" _ "k8s.io/client-go/plugin/pkg/client/auth" - "k8s.io/component-base/version" "k8s.io/klog/v2" "k8s.io/apimachinery/pkg/runtime" @@ -34,6 +33,7 @@ import ( nfdkubernetesiov1 "github.com/kubernetes-sigs/node-feature-discovery-operator/api/v1" "github.com/kubernetes-sigs/node-feature-discovery-operator/controllers" "github.com/kubernetes-sigs/node-feature-discovery-operator/pkg/utils" + "github.com/kubernetes-sigs/node-feature-discovery-operator/pkg/version" // +kubebuilder:scaffold:imports ) diff --git a/pkg/version/version.go b/pkg/version/version.go new file mode 100644 index 00000000..cd3e86dc --- /dev/null +++ b/pkg/version/version.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package version + +const undefinedVersion string = "undefined" + +// Must not be const, supposed to be set using ldflags at build time +var version = undefinedVersion + +// Get returns the version as a string +func Get() string { + return version +} + +// Undefined returns if version is at it's default value +func Undefined() bool { + return version == undefinedVersion +}