From 53f3a4a7c98c334b954c9fb799991d5a5f567959 Mon Sep 17 00:00:00 2001 From: Andreas Sommer Date: Wed, 26 Apr 2023 22:03:36 +0200 Subject: [PATCH] Only build the cluster-api components that we need Based on the about-to-be-upstreamed https://github.com/kubernetes-sigs/cluster-api/pull/8586 --- .circleci/config.yml | 15 +++++++++------ Makefile | 39 ++++++++++++++++++++++++++------------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1b59db15b1c1..32b15164a749 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,6 +9,9 @@ jobs: ALL_ARCH: "amd64 arm64" REGISTRY_QUAY: quay.io/giantswarm REGISTRY_CHINA: giantswarm-registry.cn-shanghai.cr.aliyuncs.com/giantswarm + + # We don't build all components, e.g. not CAPD or clusterctl + ALL_DOCKER_BUILD: "core kubeadm-bootstrap kubeadm-control-plane" steps: - checkout - run: @@ -37,11 +40,11 @@ jobs: rm .dockerignore for registry in $REGISTRY_QUAY $REGISTRY_CHINA; do - make docker-build-all ALL_ARCH="$ALL_ARCH" TAG=$CIRCLE_SHA1 REGISTRY=$registry + make docker-build-all ALL_ARCH="$ALL_ARCH" ALL_DOCKER_BUILD="$ALL_DOCKER_BUILD" TAG=$CIRCLE_SHA1 REGISTRY=$registry if [ -n "$CIRCLE_TAG" ]; then echo "Building tag $CIRCLE_TAG" - make docker-build-all ALL_ARCH="$ALL_ARCH" TAG="$CIRCLE_TAG" REGISTRY=$registry + make docker-build-all ALL_ARCH="$ALL_ARCH" ALL_DOCKER_BUILD="$ALL_DOCKER_BUILD" TAG="$CIRCLE_TAG" REGISTRY=$registry fi done @@ -51,11 +54,11 @@ jobs: command: | docker login --username $QUAY_USERNAME --password $QUAY_PASSWORD quay.io - make docker-push-all ALL_ARCH="$ALL_ARCH" TAG=$CIRCLE_SHA1 REGISTRY=$REGISTRY_QUAY + make docker-push-all ALL_ARCH="$ALL_ARCH" ALL_DOCKER_BUILD="$ALL_DOCKER_BUILD" TAG=$CIRCLE_SHA1 REGISTRY=$REGISTRY_QUAY if [ -n "$CIRCLE_TAG" ]; then echo "Pushing tag $CIRCLE_TAG" - make docker-push-all ALL_ARCH="$ALL_ARCH" TAG="$CIRCLE_TAG" REGISTRY=$REGISTRY_QUAY + make docker-push-all ALL_ARCH="$ALL_ARCH" ALL_DOCKER_BUILD="$ALL_DOCKER_BUILD" TAG="$CIRCLE_TAG" REGISTRY=$REGISTRY_QUAY fi - run: @@ -66,11 +69,11 @@ jobs: set -eu docker login --username $ALIYUN_USERNAME --password $ALIYUN_PASSWORD giantswarm-registry.cn-shanghai.cr.aliyuncs.com - make docker-push-all ALL_ARCH="$ALL_ARCH" TAG=$CIRCLE_SHA1 REGISTRY=$REGISTRY_CHINA + make docker-push-all ALL_ARCH="$ALL_ARCH" ALL_DOCKER_BUILD="$ALL_DOCKER_BUILD" TAG=$CIRCLE_SHA1 REGISTRY=$REGISTRY_CHINA if [ -n "${CIRCLE_TAG:-}" ]; then echo "Pushing tag $CIRCLE_TAG" - make docker-push-all ALL_ARCH="$ALL_ARCH" TAG="$CIRCLE_TAG" REGISTRY=$REGISTRY_CHINA + make docker-push-all ALL_ARCH="$ALL_ARCH" ALL_DOCKER_BUILD="$ALL_DOCKER_BUILD" TAG="$CIRCLE_TAG" REGISTRY=$REGISTRY_CHINA fi ) || { echo "Failed attempt ${n}"; continue; } diff --git a/Makefile b/Makefile index 8c8939df2d81..edd81ad2c815 100644 --- a/Makefile +++ b/Makefile @@ -661,6 +661,7 @@ docker-build-all: $(addprefix docker-build-,$(ALL_ARCH)) ## Build docker images docker-build-%: $(MAKE) ARCH=$* docker-build +# Choice of images to build/push ALL_DOCKER_BUILD = core kubeadm-bootstrap kubeadm-control-plane docker-infrastructure test-extension clusterctl .PHONY: docker-build @@ -982,24 +983,17 @@ promote-images: $(KPROMO) .PHONY: docker-push-all docker-push-all: $(addprefix docker-push-,$(ALL_ARCH)) ## Push the docker images to be included in the release for all architectures + related multiarch manifests - $(MAKE) docker-push-manifest-core - $(MAKE) docker-push-manifest-kubeadm-bootstrap - $(MAKE) docker-push-manifest-kubeadm-control-plane - $(MAKE) docker-push-manifest-docker-infrastructure - $(MAKE) docker-push-manifest-test-extension - $(MAKE) docker-push-clusterctl + $(MAKE) ALL_ARCH="$(ALL_ARCH)" $(addprefix docker-push-manifest-,$(ALL_DOCKER_BUILD)) docker-push-%: $(MAKE) ARCH=$* docker-push .PHONY: docker-push -docker-push: ## Push the docker images to be included in the release +docker-push: $(addprefix docker-push-,$(ALL_DOCKER_BUILD)) ## Push the docker images to be included in the release + +.PHONY: docker-push-core +docker-push-core: ## Push the core docker image docker push $(CONTROLLER_IMG)-$(ARCH):$(TAG) - docker push $(KUBEADM_BOOTSTRAP_CONTROLLER_IMG)-$(ARCH):$(TAG) - docker push $(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG)-$(ARCH):$(TAG) - docker push $(CLUSTERCTL_IMG)-$(ARCH):$(TAG) - docker push $(CAPD_CONTROLLER_IMG)-$(ARCH):$(TAG) - docker push $(TEST_EXTENSION_IMG)-$(ARCH):$(TAG) .PHONY: docker-push-manifest-core docker-push-manifest-core: ## Push the multiarch manifest for the core docker images @@ -1009,6 +1003,10 @@ docker-push-manifest-core: ## Push the multiarch manifest for the core docker im $(MAKE) set-manifest-image MANIFEST_IMG=$(CONTROLLER_IMG) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="./config/default/manager_image_patch.yaml" $(MAKE) set-manifest-pull-policy TARGET_RESOURCE="./config/default/manager_pull_policy.yaml" +.PHONY: docker-push-kubeadm-bootstrap +docker-push-kubeadm-bootstrap: ## Push the kubeadm bootstrap docker image + docker push $(KUBEADM_BOOTSTRAP_CONTROLLER_IMG)-$(ARCH):$(TAG) + .PHONY: docker-push-manifest-kubeadm-bootstrap docker-push-manifest-kubeadm-bootstrap: ## Push the multiarch manifest for the kubeadm bootstrap docker images docker manifest create --amend $(KUBEADM_BOOTSTRAP_CONTROLLER_IMG):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(KUBEADM_BOOTSTRAP_CONTROLLER_IMG)\-&:$(TAG)~g") @@ -1017,6 +1015,10 @@ docker-push-manifest-kubeadm-bootstrap: ## Push the multiarch manifest for the k $(MAKE) set-manifest-image MANIFEST_IMG=$(KUBEADM_BOOTSTRAP_CONTROLLER_IMG) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="./bootstrap/kubeadm/config/default/manager_image_patch.yaml" $(MAKE) set-manifest-pull-policy TARGET_RESOURCE="./bootstrap/kubeadm/config/default/manager_pull_policy.yaml" +.PHONY: docker-push-kubeadm-control-plane +docker-push-kubeadm-control-plane: ## Push the kubeadm control plane docker image + docker push $(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG)-$(ARCH):$(TAG) + .PHONY: docker-push-manifest-kubeadm-control-plane docker-push-manifest-kubeadm-control-plane: ## Push the multiarch manifest for the kubeadm control plane docker images docker manifest create --amend $(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG)\-&:$(TAG)~g") @@ -1025,6 +1027,10 @@ docker-push-manifest-kubeadm-control-plane: ## Push the multiarch manifest for t $(MAKE) set-manifest-image MANIFEST_IMG=$(KUBEADM_CONTROL_PLANE_CONTROLLER_IMG) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="./controlplane/kubeadm/config/default/manager_image_patch.yaml" $(MAKE) set-manifest-pull-policy TARGET_RESOURCE="./controlplane/kubeadm/config/default/manager_pull_policy.yaml" +.PHONY: docker-push-docker-infrastructure +docker-push-docker-infrastructure: ## Push the docker infrastructure provider image + docker push $(CAPD_CONTROLLER_IMG)-$(ARCH):$(TAG) + .PHONY: docker-push-manifest-docker-infrastructure docker-push-manifest-docker-infrastructure: ## Push the multiarch manifest for the docker infrastructure provider images docker manifest create --amend $(CAPD_CONTROLLER_IMG):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(CAPD_CONTROLLER_IMG)\-&:$(TAG)~g") @@ -1033,6 +1039,9 @@ docker-push-manifest-docker-infrastructure: ## Push the multiarch manifest for t $(MAKE) set-manifest-image MANIFEST_IMG=$(CAPD_CONTROLLER_IMG) MANIFEST_TAG=$(TAG) TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_image_patch.yaml" $(MAKE) set-manifest-pull-policy TARGET_RESOURCE="$(CAPD_DIR)/config/default/manager_pull_policy.yaml" +.PHONY: docker-push-test-extension +docker-push-test-extension: ## Push the test extension provider image + docker push $(TEST_EXTENSION_IMG)-$(ARCH):$(TAG) .PHONY: docker-push-manifest-test-extension docker-push-manifest-test-extension: ## Push the multiarch manifest for the test extension provider images @@ -1043,7 +1052,11 @@ docker-push-manifest-test-extension: ## Push the multiarch manifest for the test $(MAKE) set-manifest-pull-policy TARGET_RESOURCE="./test/extension/config/default/manager_pull_policy.yaml" .PHONY: docker-push-clusterctl -docker-push-clusterctl: ## Push the clusterctl images +docker-push-clusterctl: ## Push the clusterctl image + docker push $(CLUSTERCTL_IMG)-$(ARCH):$(TAG) + +.PHONY: docker-push-manifest-clusterctl +docker-push-manifest-clusterctl: ## Push the multiarch manifest for the clusterctl images docker manifest create --amend $(CLUSTERCTL_IMG):$(TAG) $(shell echo $(ALL_ARCH) | sed -e "s~[^ ]*~$(CLUSTERCTL_IMG)\-&:$(TAG)~g") @for arch in $(ALL_ARCH); do docker manifest annotate --arch $${arch} ${CLUSTERCTL_IMG}:${TAG} ${CLUSTERCTL_IMG}-$${arch}:${TAG}; done docker manifest push --purge $(CLUSTERCTL_IMG):$(TAG)