Merge pull request #252 from Pensu/multi-arch

Making targets for multi-arch
This commit is contained in:
Frederic Branczyk 2017-09-13 10:55:37 +02:00 committed by GitHub
commit 6ac46515fe
1 changed files with 41 additions and 14 deletions

View File

@ -1,12 +1,15 @@
all: build
FLAGS =
COMMONENVVAR = GOOS=$(shell uname -s | tr A-Z a-z) GOARCH=$(subst x86_64,amd64,$(patsubst i%86,386,$(shell uname -m)))
BUILDENVVAR = CGO_ENABLED=0
TESTENVVAR =
REGISTRY = quay.io/coreos
TAG = $(shell git describe --abbrev=0)
PKGS = $(shell go list ./... | grep -v /vendor/)
ARCH ?= $(shell go env GOARCH)
ALL_ARCH = amd64 arm arm64 ppc64le s390x
IMAGE = $(REGISTRY)/kube-state-metrics
MULTI_ARCH_IMG = $(IMAGE)-$(ARCH)
gofmtcheck:
@go fmt $(PKGS) | grep ".*\.go"; if [ "$$?" = "0" ]; then exit 1; fi
@ -22,22 +25,46 @@ doccheck:
@cd Documentation; for doc in *.md; do if [ "$$doc" != "README.md" ] && ! grep -q "$$doc" *.md; then echo "ERROR: No link to documentation file $${doc} detected"; exit 1; fi; done
@echo OK
deps:
go get github.com/tools/godep
build: clean
GOOS=$(shell uname -s | tr A-Z a-z) GOARCH=$(ARCH) $(BUILDENVVAR) go build -o kube-state-metrics
build: clean deps
$(COMMONENVVAR) $(BUILDENVVAR) godep go build -o kube-state-metrics
test-unit: clean build
GOOS=$(shell uname -s | tr A-Z a-z) GOARCH=$(ARCH) $(TESTENVVAR) go test --race $(FLAGS) $(PKGS)
test-unit: clean deps build
$(COMMONENVVAR) $(TESTENVVAR) godep go test --race $(FLAGS) $(PKGS)
TEMP_DIR := $(shell mktemp -d)
container: build
docker build -t ${REGISTRY}/kube-state-metrics:$(TAG) .
all: all-container
push: container
gcloud docker -- push ${REGISTRY}/kube-state-metrics:$(TAG)
sub-container-%:
$(MAKE) --no-print-directory ARCH=$* container
sub-push-%:
$(MAKE) --no-print-directory ARCH=$* push
all-container: $(addprefix sub-container-,$(ALL_ARCH))
all-push: $(addprefix sub-push-,$(ALL_ARCH))
container: .container-$(ARCH)
.container-$(ARCH):
cp -r * $(TEMP_DIR)
GOOS=$(shell uname -s | tr A-Z a-z) GOARCH=$(ARCH) $(BUILDENVVAR) go build -o $(TEMP_DIR)/kube-state-metrics
docker build -t $(MULTI_ARCH_IMG):$(TAG) $(TEMP_DIR)
ifeq ($(ARCH), amd64)
# Adding check for amd64
docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG)
endif
push: .push-$(ARCH)
.push-$(ARCH): .container-$(ARCH)
gcloud docker -- push $(MULTI_ARCH_IMG):$(TAG)
ifeq ($(ARCH), amd64)
gcloud docker -- push $(IMAGE):$(TAG)
endif
clean:
rm -f kube-state-metrics
.PHONY: all deps build test-unit container push clean
.PHONY: all build all-push all-container test-unit container push clean