From e0c83d33ac2593f9b009ff4c7928b67ad5c65cd8 Mon Sep 17 00:00:00 2001 From: Sertac Ozercan Date: Thu, 26 Jan 2023 06:09:34 +0000 Subject: [PATCH] refactor: use Go 1.18 buildinfo Signed-off-by: Sertac Ozercan --- Dockerfile | 14 ++------------ Makefile | 7 ------- build/get-build-commit.sh | 9 --------- build/get-build-hostname.sh | 3 --- build/get-build-timestamp.sh | 3 --- build/vendormanifests.go | 8 -------- gator.Dockerfile | 6 ++---- pkg/version/version.go | 30 ++++++++++++++++++++++-------- 8 files changed, 26 insertions(+), 54 deletions(-) delete mode 100755 build/get-build-commit.sh delete mode 100755 build/get-build-hostname.sh delete mode 100755 build/get-build-timestamp.sh delete mode 100644 build/vendormanifests.go diff --git a/Dockerfile b/Dockerfile index 442ab2c731e..3d7d34dcb66 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,22 +19,12 @@ ENV GO111MODULE=on \ GOARM=${TARGETVARIANT} WORKDIR /go/src/github.com/open-policy-agent/gatekeeper - -COPY pkg/ pkg/ -COPY third_party/ third_party/ -COPY vendor/ vendor/ -COPY main.go main.go -COPY apis/ apis/ -COPY go.mod . - -RUN go build -mod vendor -a -ldflags "${LDFLAGS:--X github.com/open-policy-agent/gatekeeper/pkg/version.Version=latest}" -o manager main.go +COPY . . +RUN go build -mod vendor -a -ldflags "${LDFLAGS:--X github.com/open-policy-agent/gatekeeper/pkg/version.Version=latest}" -o manager FROM $BASEIMAGE WORKDIR / - COPY --from=builder /go/src/github.com/open-policy-agent/gatekeeper/manager . - USER 65532:65532 - ENTRYPOINT ["/manager"] diff --git a/Makefile b/Makefile index 07f49691697..801baf6efcd 100644 --- a/Makefile +++ b/Makefile @@ -40,14 +40,7 @@ BENCHMARK_FILE_NAME ?= benchmarks.txt ROOT_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) BIN_DIR := $(abspath $(ROOT_DIR)/bin) -BUILD_COMMIT := $(shell ./build/get-build-commit.sh) -BUILD_TIMESTAMP := $(shell ./build/get-build-timestamp.sh) -BUILD_HOSTNAME := $(shell ./build/get-build-hostname.sh) - LDFLAGS := "-X github.com/open-policy-agent/gatekeeper/pkg/version.Version=$(VERSION) \ - -X github.com/open-policy-agent/gatekeeper/pkg/version.Vcs=$(BUILD_COMMIT) \ - -X github.com/open-policy-agent/gatekeeper/pkg/version.Timestamp=$(BUILD_TIMESTAMP) \ - -X github.com/open-policy-agent/gatekeeper/pkg/version.Hostname=$(BUILD_HOSTNAME) \ -X main.frameworksVersion=$(FRAMEWORKS_VERSION) \ -X main.opaVersion=$(OPA_VERSION)" diff --git a/build/get-build-commit.sh b/build/get-build-commit.sh deleted file mode 100755 index 5c386553cf3..00000000000 --- a/build/get-build-commit.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -GIT_SHA=$(git rev-parse --short HEAD) - -if [ -z "$(git status --porcelain 2>/dev/null)" ]; then - echo $GIT_SHA -else - echo "$GIT_SHA-dirty" -fi diff --git a/build/get-build-hostname.sh b/build/get-build-hostname.sh deleted file mode 100755 index 0ed5c926ced..00000000000 --- a/build/get-build-hostname.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -hostname -f diff --git a/build/get-build-timestamp.sh b/build/get-build-timestamp.sh deleted file mode 100755 index 8ba5567b6d1..00000000000 --- a/build/get-build-timestamp.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -date -u +"%Y-%m-%dT%H:%M:%SZ" diff --git a/build/vendormanifests.go b/build/vendormanifests.go deleted file mode 100644 index a5a216e1fcd..00000000000 --- a/build/vendormanifests.go +++ /dev/null @@ -1,8 +0,0 @@ -// +build tools - -package build - -import ( - _ "github.com/open-policy-agent/frameworks/constraint/deploy" -) - diff --git a/gator.Dockerfile b/gator.Dockerfile index a931d288ffe..3227e60bdc4 100644 --- a/gator.Dockerfile +++ b/gator.Dockerfile @@ -18,10 +18,8 @@ ENV GO111MODULE=on \ GOARCH=${TARGETARCH} \ GOARM=${TARGETVARIANT} -COPY . /tmp/gatekeeper - -WORKDIR /tmp/gatekeeper/cmd/gator - +COPY . /go/src/github.com/open-policy-agent/gatekeeper +WORKDIR /go/src/github.com/open-policy-agent/gatekeeper/cmd/gator RUN go build -mod vendor -a -ldflags "${LDFLAGS:--X github.com/open-policy-agent/gatekeeper/pkg/version.Version=latest -X main.frameworksVersion=latest -X main.opaVersion=latest}" -o /gator FROM --platform=$BUILDPLATFORM $BASEIMAGE as build diff --git a/pkg/version/version.go b/pkg/version/version.go index 52531b3049d..414cc8fd40b 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -3,18 +3,32 @@ package version import ( "fmt" "runtime" + "runtime/debug" ) -// Vcs is is the commit hash for the binary build. -var Vcs string - -// Timestamp is the date for the binary build. -var Timestamp string - // Version is the gatekeeper version. var Version string -// GetUserAgent returns a user agent of the format: gatekeeper/ (/) /. +// GetUserAgent returns a user agent of the format: gatekeeper/ (/) <-vcsdirty>/. func GetUserAgent() string { - return fmt.Sprintf("gatekeeper/%s (%s/%s) %s/%s", Version, runtime.GOOS, runtime.GOARCH, Vcs, Timestamp) + vcsrevision := "unknown" + vcstimestamp := "unknown" + vcsdirty := "" + + if info, ok := debug.ReadBuildInfo(); ok { + for _, v := range info.Settings { + switch v.Key { + case "vcs.revision": + vcsrevision = v.Value + case "vcs.modified": + if v.Value == "true" { + vcsdirty = "-dirty" + } + case "vcs.time": + vcstimestamp = v.Value + } + } + } + + return fmt.Sprintf("gatekeeper/%s (%s/%s) %s%s/%s", Version, runtime.GOOS, runtime.GOARCH, vcsrevision, vcsdirty, vcstimestamp) }