From 3ed75ebcc140064a2ce66ce48b0f6aa4ad16c400 Mon Sep 17 00:00:00 2001 From: oraz Date: Thu, 5 Sep 2024 13:55:19 +0300 Subject: [PATCH] Build manager binary in a modular way Allow overriding CGO_ENABLED value, static flag, and exporting GOEXPERIMENT --- hack/build.sh | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/hack/build.sh b/hack/build.sh index 496c967f3..bc9fae7f2 100755 --- a/hack/build.sh +++ b/hack/build.sh @@ -1,5 +1,4 @@ -#!/bin/bash -set -ex +#!/bin/bash -ex GIT_VERSION=$(git describe --always --tags || true) VERSION=${CI_UPSTREAM_VERSION:-${GIT_VERSION}} @@ -9,8 +8,29 @@ BUILD_DATE=$(date --utc -Iseconds) mkdir -p bin -LDFLAGS="-s -w " -LDFLAGS+="-X github.com/medik8s/node-maintenance-operator/version.Version=${VERSION} " -LDFLAGS+="-X github.com/medik8s/node-maintenance-operator/version.GitCommit=${COMMIT} " -LDFLAGS+="-X github.com/medik8s/node-maintenance-operator/version.BuildDate=${BUILD_DATE} " -GOFLAGS=-mod=vendor CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="${LDFLAGS}" -o bin/manager main.go +# first value must not be quoted +LDFLAGS_VALUE="-X github.com/medik8s/node-maintenance-operator/version.Version=${VERSION}" +# additional values must be quoted when used with GOFLAGS! +LDFLAGS_VALUE+=" \"-w\"" +LDFLAGS_VALUE+="-X github.com/medik8s/node-maintenance-operator/version.GitCommit=${COMMIT} " +LDFLAGS_VALUE+="-X github.com/medik8s/node-maintenance-operator/version.BuildDate=${BUILD_DATE}" +# allow override for static flag +LDFLAGS_STATIC="${LDFLAGS_STATIC:-" \"-s\""}" +LDFLAGS_VALUE+="${LDFLAGS_STATIC}" +# must be single quoted for use in GOFLAGS +LDFLAGS="'-ldflags=${LDFLAGS_VALUE}'" + +# add ldflags to goflags +export GOFLAGS+=" ${LDFLAGS}" +echo "goflags: ${GOFLAGS}" + +# allow override and use zero by default- static linking +export CGO_ENABLED=${CGO_ENABLED:-0} +echo "cgo: ${CGO_ENABLED}" + +# export in case it was set +if [ ! -z "${GOEXPERIMENT}" ]; then + export GOEXPERIMENT= $GOEXPERIMENT +fi + +GOOS=linux GOARCH=amd64 go build -o bin/manager main.go