Skip to content

Commit dc78d82

Browse files
authored
Fix version logging at binary startup. (#985)
* Fix version logging at binary startup. Signed-off-by: Saketh Kalaga <51327242+renormalize@users.noreply.github.com> * Address review comments from @aaronfern. * Add `ldflags` to the `start` make target. --------- Signed-off-by: Saketh Kalaga <51327242+renormalize@users.noreply.github.com>
1 parent d73a2a7 commit dc78d82

File tree

5 files changed

+49
-6
lines changed

5 files changed

+49
-6
lines changed

.ci/build

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,22 @@ else
2828
export BINARY_PATH="$(${READLINK_BIN} -f "${BINARY_PATH}")/bin"
2929
fi
3030

31-
cd "${SOURCE_PATH}"
31+
VCS="github.com"
32+
ORGANIZATION="gardener"
33+
PROJECT="machine-controller-manager"
34+
REPOSITORY=${VCS}/${ORGANIZATION}/${PROJECT}
35+
GIT_SHA="${GIT_SHA:-$(git rev-parse --short HEAD || echo "GitNotFound")}"
36+
37+
cd "${SOURCE_PATH}"
3238

3339
###############################################################################
3440

41+
VERSION_FILE="$(${READLINK_BIN} -f "${SOURCE_PATH}/VERSION")"
42+
VERSION="${VERSION:-"$(cat "${VERSION_FILE}")"}"
43+
GIT_SHA="${GIT_SHA:-$(git rev-parse --short HEAD || echo "GitNotFound")}"
44+
3545
CGO_ENABLED=0 GO111MODULE=on go build \
3646
-v \
3747
-o "${BINARY_PATH}/machine-controller-manager" \
48+
-ldflags "-w -X ${REPOSITORY}/pkg/version.Version=${VERSION} -X ${REPOSITORY}/pkg/version.GitSHA=${GIT_SHA}" \
3849
cmd/machine-controller-manager/controller_manager.go

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
TOOLS_DIR := hack/tools
77
include hack/tools.mk
88

9+
REPOSITORY := $(shell go list -m)
910
IMAGE_REPOSITORY := europe-docker.pkg.dev/gardener-project/public/gardener/machine-controller-manager
10-
IMAGE_TAG := $(shell cat VERSION)
11+
VERSION := $(shell cat VERSION)
12+
IMAGE_TAG := $(VERSION)
13+
GIT_SHA := $(shell git rev-parse --short HEAD || echo "GitNotFound")
1114
COVERPROFILE := test/output/coverprofile.out
1215

1316
LEADER_ELECT ?= "true" # If LEADER_ELECT is not set in the environment, use the default value "true"
@@ -89,6 +92,7 @@ non-gardener-restore:
8992
.PHONY: start
9093
start:
9194
@GO111MODULE=on go run \
95+
-ldflags "-w -X ${REPOSITORY}/pkg/version.Version=${VERSION} -X ${REPOSITORY}/pkg/version.GitSHA=${GIT_SHA}" \
9296
cmd/machine-controller-manager/controller_manager.go \
9397
--control-kubeconfig=${CONTROL_KUBECONFIG} \
9498
--target-kubeconfig=${TARGET_KUBECONFIG} \

cmd/machine-controller-manager/app/controllermanager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"github.com/gardener/machine-controller-manager/cmd/machine-controller-manager/app/options"
4444
"github.com/gardener/machine-controller-manager/pkg/handlers"
4545
"github.com/gardener/machine-controller-manager/pkg/util/configz"
46+
"github.com/gardener/machine-controller-manager/pkg/version"
4647
prometheus "github.com/prometheus/client_golang/prometheus/promhttp"
4748
v1 "k8s.io/api/core/v1"
4849
"k8s.io/apimachinery/pkg/runtime/schema"
@@ -51,7 +52,6 @@ import (
5152
"k8s.io/client-go/discovery"
5253
"k8s.io/client-go/kubernetes"
5354
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
54-
"k8s.io/client-go/pkg/version"
5555
"k8s.io/client-go/rest"
5656
"k8s.io/client-go/tools/clientcmd"
5757
"k8s.io/client-go/tools/leaderelection"
@@ -75,7 +75,7 @@ var (
7575
// Run runs the MCMServer. This should never exit.
7676
func Run(s *options.MCMServer) error {
7777
// To help debugging, immediately log version
78-
klog.V(3).Infof("Version: %+v", version.Get())
78+
version.LogVersionInfoWithLevel(3)
7979
if err := s.Validate(); err != nil {
8080
return err
8181
}

pkg/util/provider/app/app.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import (
4545
"github.com/gardener/machine-controller-manager/pkg/util/configz"
4646
"github.com/gardener/machine-controller-manager/pkg/util/provider/app/options"
4747
"github.com/gardener/machine-controller-manager/pkg/util/provider/driver"
48+
"github.com/gardener/machine-controller-manager/pkg/version"
4849
prometheus "github.com/prometheus/client_golang/prometheus/promhttp"
4950
v1 "k8s.io/api/core/v1"
5051
"k8s.io/apimachinery/pkg/runtime/schema"
@@ -53,7 +54,6 @@ import (
5354
"k8s.io/client-go/discovery"
5455
"k8s.io/client-go/kubernetes"
5556
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
56-
"k8s.io/client-go/pkg/version"
5757
"k8s.io/client-go/rest"
5858
"k8s.io/client-go/tools/clientcmd"
5959
"k8s.io/client-go/tools/leaderelection"
@@ -73,7 +73,7 @@ var (
7373
// Run runs the MCServer. This should never exit.
7474
func Run(s *options.MCServer, driver driver.Driver) error {
7575
// To help debugging, immediately log version
76-
klog.V(4).Infof("Version: %+v", version.Get())
76+
version.LogVersionInfoWithLevel(4)
7777
if err := s.Validate(); err != nil {
7878
return err
7979
}

pkg/version/version.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// SPDX-FileCopyrightText: 2025 SAP SE or an SAP affiliate company and Gardener contributors
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package version
6+
7+
import (
8+
"k8s.io/klog/v2"
9+
"runtime"
10+
)
11+
12+
var (
13+
// These variables typically come from -ldflags settings in build
14+
15+
// Version shows the machine-controller-manager binary version.
16+
Version string
17+
// GitSHA shows the machine-controller-manager binary code commit SHA on git.
18+
GitSHA string
19+
)
20+
21+
// LogVersionInfoWithLevel logs machine-controller-manager version and build information.
22+
func LogVersionInfoWithLevel(debugLevel int32) {
23+
level := klog.Level(debugLevel)
24+
klog.V(level).Infof("machine-controller-manager Version: %s\n", Version)
25+
klog.V(level).Infof("Git SHA: %s\n", GitSHA)
26+
klog.V(level).Infof("Go Version: %s\n", runtime.Version())
27+
klog.V(level).Infof("Go OS/Arch: %s/%s\n", runtime.GOOS, runtime.GOARCH)
28+
}

0 commit comments

Comments
 (0)