From 752f06cac7e1576b692eaa5f3736e4847b988346 Mon Sep 17 00:00:00 2001 From: Patrik Date: Fri, 11 Sep 2020 19:14:56 +0200 Subject: [PATCH] feat: add EXTRA_USER_AGENT env (#26) Signed-off-by: Patrik Cyvoct --- Dockerfile | 4 +++- Makefile | 7 +++++-- scaleway/cloud.go | 18 +++++++++--------- scaleway/version.go | 8 ++++++++ 4 files changed, 25 insertions(+), 12 deletions(-) create mode 100644 scaleway/version.go diff --git a/Dockerfile b/Dockerfile index 9d2ba80..6b53d81 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,9 @@ COPY cmd/ cmd/ COPY scaleway/ scaleway/ ARG TAG -RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -ldflags "-w -s -X github.com/scaleway/scaleway-cloud-controller-manager/scaleway.version=${TAG}" -o scaleway-cloud-controller-manager ./cmd/scaleway-cloud-controller-manager +ARG COMMIT_SHA +ARG BUILD_DATE +RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -a -ldflags "-w -s -X github.com/scaleway/scaleway-cloud-controller-manager/scaleway.version=${TAG} -X github.com/scaleway/scaleway-cloud-controller-manager/scaleway.buildDate=${BUILD_DATE} github.com/scaleway/scaleway-cloud-controller-manager/scaleway.gitCommit=${COMMIT_SHA} " -o scaleway-cloud-controller-manager ./cmd/scaleway-cloud-controller-manager FROM scratch WORKDIR / diff --git a/Makefile b/Makefile index 9c00d5b..bc94fc9 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,8 @@ OS ?= $(shell go env GOOS) ARCH ?= $(shell go env GOARCH) ALL_PLATFORM = linux/amd64,linux/arm/v7,linux/arm64 +BUILD_DATE ?= $(shell date -Is) + GOPATH ?= $(GOPATH) REGISTRY ?= scaleway @@ -10,6 +12,7 @@ FULL_IMAGE ?= $(REGISTRY)/$(IMAGE) TAG ?= $(shell git rev-parse HEAD) IMAGE_TAG ?= $(shell git rev-parse HEAD) +COMMIT_SHA ?= $(shell git rev-parse HEAD) DOCKER_CLI_EXPERIMENTAL ?= enabled @@ -35,12 +38,12 @@ compile: .PHONY: docker-build docker-build: @echo "Building scaleway-cloud-controller-manager for ${ARCH}" - docker build . --platform=linux/$(ARCH) --build-arg ARCH=$(ARCH) --build-arg TAG=$(TAG) -f Dockerfile -t ${FULL_IMAGE}:${IMAGE_TAG}-$(ARCH) + docker build . --platform=linux/$(ARCH) --build-arg ARCH=$(ARCH) --build-arg TAG=$(TAG) --build-arg COMMIT_SHA=$(COMMIT_SHA) --build-arg BUILD_DATE=$(BUILD_DATE) -f Dockerfile -t ${FULL_IMAGE}:${IMAGE_TAG}-$(ARCH) .PHONY: docker-buildx-all docker-buildx-all: @echo "Making release for tag $(IMAGE_TAG)" - docker buildx build --build-arg TAG=$(TAG) --platform=$(ALL_PLATFORM) --push -t $(FULL_IMAGE):$(IMAGE_TAG) . + docker buildx build --build-arg TAG=$(TAG) --build-arg COMMIT_SHA=$(COMMIT_SHA) --build-arg BUILD_DATE=$(BUILD_DATE) --platform=$(ALL_PLATFORM) --push -t $(FULL_IMAGE):$(IMAGE_TAG) . ## Release .PHONY: release diff --git a/scaleway/cloud.go b/scaleway/cloud.go index 91d760e..3964fed 100644 --- a/scaleway/cloud.go +++ b/scaleway/cloud.go @@ -18,6 +18,7 @@ package scaleway import ( "errors" + "fmt" "io" "os" "time" @@ -35,15 +36,12 @@ const ( cacheUpdateFrequency = time.Minute * 10 // optional fields - scwCcmUserAgent = "SCW_CCM_USER_AGENT" scwCcmPrefixEnv = "SCW_CCM_PREFIX" scwCcmTagsEnv = "SCW_CCM_TAGS" scwCcmTagsDelimiterEnv = "SCW_CCM_TAGS_DELIMITER" -) -var ( - version = "0.0.0-dirty" - userAgent = "scaleway/ccm (" + version + ")" + // extraUserAgentEnv is the environment variable that adds some string at the end of the user agent + extraUserAgentEnv = "EXTRA_USER_AGENT" ) type cloud struct { @@ -57,6 +55,11 @@ type cloud struct { func newCloud(config io.Reader) (cloudprovider.Interface, error) { logger.SetLogger(logging) + userAgent := fmt.Sprintf("scaleway/ccm %s (%s)", ccmVersion, gitCommit) + if extraUA := os.Getenv(extraUserAgentEnv); extraUA != "" { + userAgent = userAgent + " " + extraUA + } + // Create a Scaleway client // use theses env variable to set or overwrite profile values // SCW_ACCESS_KEY @@ -64,6 +67,7 @@ func newCloud(config io.Reader) (cloudprovider.Interface, error) { // SCW_DEFAULT_ORGANIZATION_ID // SCW_DEFAULT_REGION // SCW_DEFAULT_ZONE + scwClient, err := scw.NewClient( scw.WithUserAgent(userAgent), scw.WithEnv(), @@ -88,10 +92,6 @@ func newCloud(config io.Reader) (cloudprovider.Interface, error) { } func init() { - if ua, ok := os.LookupEnv(scwCcmUserAgent); ok { - userAgent = ua - } - cloudprovider.RegisterCloudProvider(providerName, func(config io.Reader) (cloudprovider.Interface, error) { return newCloud(config) }) diff --git a/scaleway/version.go b/scaleway/version.go new file mode 100644 index 0000000..d0fd4d8 --- /dev/null +++ b/scaleway/version.go @@ -0,0 +1,8 @@ +package scaleway + +// These are set during build time via -ldflags +var ( + ccmVersion string + gitCommit string + buildDate string +)