6969 GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)
7070endif
7171
72- PROMU_VERSION ?= 0.4.0
72+ GOTEST := $(GO) test
73+ GOTEST_DIR :=
74+ ifneq ($(CIRCLE_JOB),)
75+ ifneq ($(shell which gotestsum),)
76+ GOTEST_DIR := test-results
77+ GOTEST := gotestsum --junitfile $(GOTEST_DIR)/unit-tests.xml --
78+ endif
79+ endif
80+
81+ PROMU_VERSION ?= 0.7.0
7382PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz
7483
7584GOLANGCI_LINT :=
7685GOLANGCI_LINT_OPTS ?=
77- GOLANGCI_LINT_VERSION ?= v1.16 .0
86+ GOLANGCI_LINT_VERSION ?= v1.36 .0
7887# golangci-lint only supports linux, darwin and windows platforms on i386/amd64.
7988# windows isn't included here because of the path separator being different.
8089ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin))
8695PREFIX ?= $(shell pwd)
8796BIN_DIR ?= $(shell pwd)
8897DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD))
98+ DOCKERFILE_PATH ?= ./Dockerfile
99+ DOCKERBUILD_CONTEXT ?= ./
89100DOCKER_REPO ?= prom
90101
91102DOCKER_ARCHS ?= amd64
@@ -139,15 +150,29 @@ else
139150 $(GO) get $(GOOPTS) -t ./...
140151endif
141152
153+ .PHONY: update-go-deps
154+ update-go-deps:
155+ @echo ">> updating Go dependencies"
156+ @for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \
157+ $(GO) get $$m; \
158+ done
159+ GO111MODULE=$(GO111MODULE) $(GO) mod tidy
160+ ifneq (,$(wildcard vendor))
161+ GO111MODULE=$(GO111MODULE) $(GO) mod vendor
162+ endif
163+
142164.PHONY: common-test-short
143- common-test-short:
165+ common-test-short: $(GOTEST_DIR)
144166 @echo ">> running short tests"
145- GO111MODULE=$(GO111MODULE) $(GO) test -short $(GOOPTS) $(pkgs)
167+ GO111MODULE=$(GO111MODULE) $(GOTEST) -short $(GOOPTS) $(pkgs)
146168
147169.PHONY: common-test
148- common-test:
170+ common-test: $(GOTEST_DIR)
149171 @echo ">> running all tests"
150- GO111MODULE=$(GO111MODULE) $(GO) test $(test-flags) $(GOOPTS) $(pkgs)
172+ GO111MODULE=$(GO111MODULE) $(GOTEST) $(test-flags) $(GOOPTS) $(pkgs)
173+
174+ $(GOTEST_DIR):
175+ @mkdir -p $@
151176
152177.PHONY: common-format
153178common-format:
@@ -199,7 +224,7 @@ endif
199224.PHONY: common-build
200225common-build: promu
201226 @echo ">> building binaries"
202- GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX)
227+ GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX) $(PROMU_BINARIES)
203228
204229.PHONY: common-tarball
205230common-tarball: promu
@@ -210,19 +235,22 @@ common-tarball: promu
210235common-docker: $(BUILD_DOCKER_ARCHS)
211236$(BUILD_DOCKER_ARCHS): common-docker-%:
212237 docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" \
238+ -f $(DOCKERFILE_PATH) \
213239 --build-arg ARCH="$*" \
214240 --build-arg OS="linux" \
215- .
241+ $(DOCKERBUILD_CONTEXT)
216242
217243.PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS)
218244common-docker-publish: $(PUBLISH_DOCKER_ARCHS)
219245$(PUBLISH_DOCKER_ARCHS): common-docker-publish-%:
220246 docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)"
221247
248+ DOCKER_MAJOR_VERSION_TAG = $(firstword $(subst ., ,$(shell cat VERSION)))
222249.PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS)
223250common-docker-tag-latest: $(TAG_DOCKER_ARCHS)
224251$(TAG_DOCKER_ARCHS): common-docker-tag-latest-%:
225252 docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest"
253+ docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:v$(DOCKER_MAJOR_VERSION_TAG)"
226254
227255.PHONY: common-docker-manifest
228256common-docker-manifest:
@@ -247,7 +275,9 @@ proto:
247275ifdef GOLANGCI_LINT
248276$(GOLANGCI_LINT):
249277 mkdir -p $(FIRST_GOPATH)/bin
250- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION)
278+ curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_LINT_VERSION)/install.sh \
279+ | sed -e '/install -d/d' \
280+ | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION)
251281endif
252282
253283ifdef GOVENDOR
0 commit comments