From b9267f4a09e903287f30ea038594377c2ef2adc4 Mon Sep 17 00:00:00 2001 From: Manjunath A Kumatagi Date: Wed, 19 Sep 2018 09:46:33 +0530 Subject: [PATCH] Manifest image for debian-hyperkube-base --- build/debian-hyperkube-base/Makefile | 31 ++++++++++++++++++++++----- build/debian-hyperkube-base/README.md | 14 +++--------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/build/debian-hyperkube-base/Makefile b/build/debian-hyperkube-base/Makefile index b87cc97df7b..4a67da27a09 100644 --- a/build/debian-hyperkube-base/Makefile +++ b/build/debian-hyperkube-base/Makefile @@ -18,9 +18,10 @@ # [ARCH=amd64] [REGISTRY="staging-k8s.gcr.io"] make (build|push) REGISTRY?=staging-k8s.gcr.io -IMAGE?=debian-hyperkube-base +IMAGE?=$(REGISTRY)/debian-hyperkube-base TAG=0.10.2 ARCH?=amd64 +ALL_ARCH = amd64 arm arm64 ppc64le s390x CACHEBUST?=1 BASEIMAGE=k8s.gcr.io/debian-base-$(ARCH):0.3.2 @@ -29,9 +30,29 @@ CNI_VERSION=v0.6.0 TEMP_DIR:=$(shell mktemp -d) CNI_TARBALL=cni-plugins-$(ARCH)-$(CNI_VERSION).tgz -.PHONY: all build push clean +# This option is for running docker manifest command +export DOCKER_CLI_EXPERIMENTAL := enabled -all: push +.PHONY: all build push clean all-build all-push-images all-push push-manifest + +all: all-push + +sub-build-%: + $(MAKE) ARCH=$* build + +all-build: $(addprefix sub-build-,$(ALL_ARCH)) + +sub-push-image-%: + $(MAKE) ARCH=$* push + +all-push-images: $(addprefix sub-push-image-,$(ALL_ARCH)) + +all-push: all-push-images push-manifest + +push-manifest: + docker manifest create --amend $(IMAGE):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(IMAGE)\-&:$(TAG)~g") + @for arch in $(ALL_ARCH); do docker manifest annotate --arch $${arch} ${IMAGE}:${TAG} ${IMAGE}-$${arch}:${TAG}; done + docker manifest push ${IMAGE}:${TAG} cni-tars/$(CNI_TARBALL): mkdir -p cni-tars/ @@ -55,8 +76,8 @@ ifneq ($(ARCH),amd64) # Register /usr/bin/qemu-ARCH-static as the handler for non-x86 binaries in the kernel docker run --rm --privileged multiarch/qemu-user-static:register --reset endif - docker build --pull -t $(REGISTRY)/$(IMAGE)-$(ARCH):$(TAG) $(TEMP_DIR) + docker build --pull -t $(IMAGE)-$(ARCH):$(TAG) $(TEMP_DIR) rm -rf $(TEMP_DIR) push: build - docker push $(REGISTRY)/$(IMAGE)-$(ARCH):$(TAG) + docker push $(IMAGE)-$(ARCH):$(TAG) diff --git a/build/debian-hyperkube-base/README.md b/build/debian-hyperkube-base/README.md index 736684a60d1..b37c04ddf23 100644 --- a/build/debian-hyperkube-base/README.md +++ b/build/debian-hyperkube-base/README.md @@ -10,24 +10,16 @@ This image is compiled for multiple architectures. If you're editing the Dockerfile or some other thing, please bump the `TAG` in the Makefile. ```console -# Build for linux/amd64 (default) -$ make push ARCH=amd64 +# Build and push images for all the architectures +$ make all-push # ---> staging-k8s.gcr.io/debian-hyperkube-base-amd64:TAG - -$ make push ARCH=arm # ---> staging-k8s.gcr.io/debian-hyperkube-base-arm:TAG - -$ make push ARCH=arm64 # ---> staging-k8s.gcr.io/debian-hyperkube-base-arm64:TAG - -$ make push ARCH=ppc64le # ---> staging-k8s.gcr.io/debian-hyperkube-base-ppc64le:TAG - -$ make push ARCH=s390x # ---> staging-k8s.gcr.io/debian-hyperkube-base-s390x:TAG ``` -If you don't want to push the images, run `make build` instead +If you don't want to push the images, run `make all-build` instead [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/build/debian-hyperkube-base/README.md?pixel)]()