@@ -49,23 +49,23 @@ endif
4949GOTEST := $(GO) test
5050GOTEST_DIR :=
5151ifneq ($(CIRCLE_JOB),)
52- ifneq ($(shell which gotestsum),)
52+ ifneq ($(shell command -v gotestsum 2> /dev/null ),)
5353 GOTEST_DIR := test-results
5454 GOTEST := gotestsum --junitfile $(GOTEST_DIR)/unit-tests.xml --
5555endif
5656endif
5757
58- PROMU_VERSION ?= 0.13 .0
58+ PROMU_VERSION ?= 0.17 .0
5959PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
6060
6161SKIP_GOLANGCI_LINT :=
6262GOLANGCI_LINT :=
6363GOLANGCI_LINT_OPTS ?=
64- GOLANGCI_LINT_VERSION ?= v1.49.0
65- # golangci-lint only supports linux, darwin and windows platforms on i386/amd64.
64+ GOLANGCI_LINT_VERSION ?= v1.59.1
65+ # golangci-lint only supports linux, darwin and windows platforms on i386/amd64/arm64 .
6666# windows isn't included here because of the path separator being different.
6767ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin))
68- ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386))
68+ ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386 arm64 ))
6969 # If we're in CI and there is an Actions file, that means the linter
7070 # is being run in Actions, so we don't need to run it here.
7171 ifneq (,$(SKIP_GOLANGCI_LINT))
@@ -91,6 +91,8 @@ BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS))
9191PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS))
9292TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS))
9393
94+ SANITIZED_DOCKER_IMAGE_TAG := $(subst +,-,$(DOCKER_IMAGE_TAG))
95+
9496ifeq ($(GOHOSTARCH),amd64)
9597 ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows))
9698 # Only supported on amd64
@@ -167,16 +169,20 @@ common-vet:
167169common-lint: $(GOLANGCI_LINT)
168170ifdef GOLANGCI_LINT
169171 @echo ">> running golangci-lint"
170- # 'go list' needs to be executed before staticcheck to prepopulate the modules cache.
171- # Otherwise staticcheck might fail randomly for some reason not yet explained.
172- $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null
173172 $(GOLANGCI_LINT) run $(GOLANGCI_LINT_OPTS) $(pkgs)
174173endif
175174
175+ .PHONY: common-lint-fix
176+ common-lint-fix: $(GOLANGCI_LINT)
177+ ifdef GOLANGCI_LINT
178+ @echo ">> running golangci-lint fix"
179+ $(GOLANGCI_LINT) run --fix $(GOLANGCI_LINT_OPTS) $(pkgs)
180+ endif
181+
176182.PHONY: common-yamllint
177183common-yamllint:
178184 @echo ">> running yamllint on all YAML files in the repository"
179- ifeq (, $(shell which yamllint))
185+ ifeq (, $(shell command -v yamllint 2> /dev/null ))
180186 @echo "yamllint not installed so skipping"
181187else
182188 yamllint .
@@ -202,10 +208,14 @@ common-tarball: promu
202208 @echo ">> building release tarball"
203209 $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR)
204210
211+ .PHONY: common-docker-repo-name
212+ common-docker-repo-name:
213+ @echo "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)"
214+
205215.PHONY: common-docker $(BUILD_DOCKER_ARCHS)
206216common-docker: $(BUILD_DOCKER_ARCHS)
207217$(BUILD_DOCKER_ARCHS): common-docker-%:
208- docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG )" \
218+ docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG )" \
209219 -f $(DOCKERFILE_PATH) \
210220 --build-arg ARCH="$*" \
211221 --build-arg OS="linux" \
@@ -214,19 +224,19 @@ $(BUILD_DOCKER_ARCHS): common-docker-%:
214224.PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS)
215225common-docker-publish: $(PUBLISH_DOCKER_ARCHS)
216226$(PUBLISH_DOCKER_ARCHS): common-docker-publish-%:
217- docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG )"
227+ docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG )"
218228
219229DOCKER_MAJOR_VERSION_TAG = $(firstword $(subst ., ,$(shell cat VERSION)))
220230.PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS)
221231common-docker-tag-latest: $(TAG_DOCKER_ARCHS)
222232$(TAG_DOCKER_ARCHS): common-docker-tag-latest-%:
223- docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG )" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest"
224- docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG )" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"
233+ docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG )" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest"
234+ docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(SANITIZED_DOCKER_IMAGE_TAG )" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"
225235
226236.PHONY: common-docker-manifest
227237common-docker-manifest:
228- DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG )" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(DOCKER_IMAGE_TAG ))
229- DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG )"
238+ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG )" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(SANITIZED_DOCKER_IMAGE_TAG ))
239+ DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(SANITIZED_DOCKER_IMAGE_TAG )"
230240
231241.PHONY: promu
232242promu: $(PROMU)
0 commit comments