Skip to content

Commit 436e8b9

Browse files
authored
Merge pull request #5 from spectrocloud/multi-arch-fix
fixed multi-arch image generation
1 parent 6055e0b commit 436e8b9

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

Makefile

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,9 @@ undeploy: $(KUSTOMIZE) ## Undeploy controller from the K8s cluster specified in
227227
# Using a flag file here as docker build doesn't produce a target file.
228228
DOCKER_BUILD_INPUTS=$(MANAGER_BIN_INPUTS) Dockerfile
229229
.PHONY: docker-build
230-
docker-build: generate-deepcopy generate-conversion .dockerflag.mk ## Build docker image containing the controller manager.
231-
.dockerflag.mk: $(DOCKER_BUILD_INPUTS)
232-
docker buildx build --load --platform linux/${ARCH} ${BUILD_ARGS} --build-arg ARCH=$(ARCH) -t ${IMG} .
233-
@touch .dockerflag.mk
230+
docker-build: generate-deepcopy generate-conversion ## Build docker image containing the controller manager.
231+
docker buildx build --load --platform linux/${ARCH} ${BUILD_ARGS} --build-arg ARCH=$(ARCH) . -t $(CONTROLLER_IMG)-$(ARCH):$(TAG)
232+
@echo $(CONTROLLER_IMG)-$(ARCH):$(TAG)
234233

235234
.PHONY: docker-build-all ## Build all the architecture docker images
236235
docker-build-all: $(addprefix docker-build-,$(ALL_ARCH))
@@ -244,11 +243,25 @@ docker-push: .dockerflag.mk ## Push docker image with the manager.
244243

245244
.PHONY: docker-push-all ## Push all the architecture docker images
246245
docker-push-all: $(addprefix docker-push-,$(ALL_ARCH))
247-
$(MAKE) docker-push
246+
$(MAKE) docker-push-core-manifest
248247

249248
docker-push-%:
250249
$(MAKE) ARCH=$* docker-push
251250

251+
.PHONY: docker-push-core-manifest
252+
docker-push-core-manifest: ## Push the fat manifest docker image.
253+
## Minimum docker version 18.06.0 is required for creating and pushing manifest images.
254+
$(MAKE) docker-push-manifest CONTROLLER_IMAGE=$(CONTROLLER_IMG) MANIFEST_FILE=$(MANIFEST_FILE)
255+
256+
.PHONY: docker-push-manifest
257+
docker-push-manifest: ## Push the manifest image
258+
@# Extract the actual image digests from the architecture-specific manifest lists
259+
@amd64_digest=$$(docker buildx imagetools inspect ${CONTROLLER_IMAGE}-amd64:${TAG} --format "{{json .}}" | jq -r '.manifest.manifests[] | select(.platform.architecture=="amd64") | .digest'); \
260+
arm64_digest=$$(docker buildx imagetools inspect ${CONTROLLER_IMAGE}-arm64:${TAG} --format "{{json .}}" | jq -r '.manifest.manifests[] | select(.platform.architecture=="arm64") | .digest'); \
261+
docker buildx imagetools create -t ${CONTROLLER_IMAGE}:${TAG} \
262+
${CONTROLLER_IMAGE}-amd64@$$amd64_digest \
263+
${CONTROLLER_IMAGE}-arm64@$$arm64_digest
264+
252265
##@ Tilt
253266
## --------------------------------------
254267
## Tilt Development

0 commit comments

Comments
 (0)