@@ -61,6 +61,11 @@ GOTESTSUM := $(abspath $(TOOLS_BIN_DIR)/gotestsum)
6161GINKGO := $(abspath $(TOOLS_BIN_DIR ) /ginkgo)
6262ENVSUBST := $(abspath $(TOOLS_BIN_DIR ) /envsubst)
6363
64+ # It is set by Prow GIT_TAG, a git-based tag of the form vYYYYMMDD-hash, e.g., v20210120-v0.3.10-308-gc61521971
65+ TAG ?= dev
66+ ARCH ?= amd64
67+ ALL_ARCH = amd64 arm arm64 ppc64le s390x
68+
6469# Define Docker related variables. Releases should modify and double check these vars.
6570STAGING_REGISTRY ?= gcr.io/k8s-staging-capi-operator
6671STAGING_BUCKET ?= artifacts.k8s-staging-capi-operator.appspot.com
@@ -73,11 +78,6 @@ IMAGE_NAME ?= cluster-api-operator
7378CONTROLLER_IMG ?= $(REGISTRY ) /$(IMAGE_NAME )
7479CONTROLLER_IMG_TAG ?= $(CONTROLLER_IMG ) -$(ARCH ) :$(TAG )
7580
76- # It is set by Prow GIT_TAG, a git-based tag of the form vYYYYMMDD-hash, e.g., v20210120-v0.3.10-308-gc61521971
77- TAG ?= dev
78- ARCH ?= amd64
79- ALL_ARCH = amd64 arm arm64 ppc64le s390x
80-
8181# Set build time variables including version details
8282LDFLAGS := $(shell $(ROOT ) /hack/version.sh)
8383
@@ -274,6 +274,13 @@ docker-build-%:
274274docker-push-all : $(addprefix docker-push-,$(ALL_ARCH ) )
275275 $(MAKE ) docker-push-manifest
276276
277+ .PHONY : docker-push-manifest
278+ docker-push-manifest : # # Push the fat manifest docker image.
279+ # # Minimum docker version 18.06.0 is required for creating and pushing manifest images.
280+ docker manifest create --amend $(CONTROLLER_IMG ) :$(TAG ) $(shell echo $(ALL_ARCH ) | sed -e "s~[^ ]* ~$(CONTROLLER_IMG ) \-&:$(TAG ) ~g")
281+ @for arch in $(ALL_ARCH ) ; do docker manifest annotate --arch $$ {arch} ${CONTROLLER_IMG} :${TAG} ${CONTROLLER_IMG} -$$ {arch}:${TAG} ; done
282+ docker manifest push --purge ${CONTROLLER_IMG} :${TAG}
283+
277284docker-push-% :
278285 $(MAKE ) ARCH=$* docker-push
279286
0 commit comments