From d42d615f7dd549f86f0404418b60998e43270002 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Wed, 22 May 2024 16:04:26 -0400 Subject: [PATCH 1/9] add qemu to ci Signed-off-by: Jordan Dubrick --- .github/workflows/ci.yaml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 70b8fed..351ea9f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -108,20 +108,24 @@ jobs: name: Check operator container image build runs-on: ubuntu-latest steps: - - - name: Check out code into the Go module directory + - name: Check out code into the Go module directory uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Check if operator docker build is working + + - name: Set up QEMU # Enables arm64 image building + uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 + + - name: Check if operator docker build is working run: docker build -f Dockerfile . operator-bundle-build: name: Check operator bundle build runs-on: ubuntu-latest steps: - - - name: Check out code into the Go module directory + - name: Check out code into the Go module directory uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - - name: Build the operator's bundle image + + - name: Set up QEMU # Enables arm64 image building + uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 + + - name: Build the operator's bundle image run: make bundle-build From 54f278fd71715923cea464e172dc09195bb79572 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Wed, 22 May 2024 16:21:42 -0400 Subject: [PATCH 2/9] update documentation Signed-off-by: Jordan Dubrick --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5233994..5ca2332 100644 --- a/README.md +++ b/README.md @@ -97,9 +97,11 @@ The repository contains a Makefile; building and deploying can be configured via | `ENVTEST` | Path to target `setup-envtest` binary | `${LOCALBIN}/setup-envtest` | | `TARGET_ARCH` | Target architecture for operator manager builds, possible values: `amd64`, `arm64`, `s390x`, `ppc64le` | `amd64` | | `TARGET_OS` | Target operating system for operator manager build, **only for `make manager`** | `linux` | +| `PUSH_IMAGE` | Controls whether or not `make docker-buildx`, `make docker-bundle-buildx` or `make podman-buildx` push to an external repository. If `false` they will only build. | `true` | | `PLATFORMS` | Target architecture(s) for `make docker-buildx` | All supported: `linux/arm64,linux/amd64,linux/s390x,linux/ppc64le` | | `KUSTOMIZE_INSTALL_SCRIPT` | URL of kustomize installation script, see [kustomize installation instructions](https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/) | `https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh` | + Some of the rules supported by the makefile: |rule|purpose| @@ -108,7 +110,9 @@ Some of the rules supported by the makefile: | kustomize | install the kustomize tool, used by other commands | | docker-build | build registry operator container image using docker | | docker-push | push registry operator container image using docker | -| docker-buildx | build & push registry operator docker image for all supported architectures | +| docker-buildx | build & push registry operator docker image for all supported architectures using docker| +| docker-bundle-buildx | build & push registry operator bundle docker image for all supported architectures using docker| +| podman-buildx | build & push registry operator docker image for all supported architectures using podman| | podman-build | build registry operator container image using podman | | podman-push | push registry operator container image using podman | | deploy | deploy operator to cluster | From f15033bac80ca5628ad0e40aba16cbd68702fb99 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Wed, 22 May 2024 16:22:11 -0400 Subject: [PATCH 3/9] add environment variable for build only to ci Signed-off-by: Jordan Dubrick --- .github/workflows/ci.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 351ea9f..44a958a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -107,6 +107,10 @@ jobs: operator-build: name: Check operator container image build runs-on: ubuntu-latest + + env: + PUSH_IMAGE: false + steps: - name: Check out code into the Go module directory uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 @@ -120,6 +124,10 @@ jobs: operator-bundle-build: name: Check operator bundle build runs-on: ubuntu-latest + + env: + PUSH_IMAGE: false + steps: - name: Check out code into the Go module directory uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 From 04d65430cbff1207747b9bce503f0219c3899869 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Wed, 22 May 2024 16:22:46 -0400 Subject: [PATCH 4/9] implement multi arch building and pushing Signed-off-by: Jordan Dubrick --- .github/workflows/dockerimage-push.yaml | 35 +++++++++-------- Makefile | 51 ++++++++++++++++++++++++- 2 files changed, 70 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dockerimage-push.yaml b/.github/workflows/dockerimage-push.yaml index 7c3a054..7f54bbc 100644 --- a/.github/workflows/dockerimage-push.yaml +++ b/.github/workflows/dockerimage-push.yaml @@ -19,35 +19,40 @@ on: branches: [ main ] jobs: - push-operator-image: runs-on: ubuntu-latest steps: - name: Checkout registry-operator source code uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Docker Build & Push - Registry Operator Image - uses: docker/build-push-action@3e7a4f6646880c6f63758d73ac32392d323eaf8f # v1.1.2 + + - name: Set up QEMU # Enables arm64 image building + uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 + + - name: Login to Quay.io + uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0 with: + registry: quay.io username: ${{ secrets.QUAY_USERNAME }} password: ${{ secrets.QUAY_PASSWORD }} - registry: quay.io - repository: devfile/registry-operator - dockerfile: Dockerfile - tags: next - tag_with_sha: true + + - name: Docker Buildx - Operator + run: "make docker-buildx" push-operator-bundle: runs-on: ubuntu-latest steps: - name: Checkout registry-operator source code uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Build and push the Registry Operator Bundle to quay.io - uses: docker/build-push-action@3e7a4f6646880c6f63758d73ac32392d323eaf8f # v1.1.2 + + - name: Set up QEMU # Enables arm64 image building + uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 + + - name: Login to Quay.io + uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0 with: + registry: quay.io username: ${{ secrets.QUAY_USERNAME }} password: ${{ secrets.QUAY_PASSWORD }} - registry: quay.io - repository: devfile/registry-operator-bundle - dockerfile: bundle.Dockerfile - tags: next - tag_with_sha: true + + - name: Docker Buildx - Bundle + run: "make docker-bundle-buildx" diff --git a/Makefile b/Makefile index ea4ef84..1a22040 100644 --- a/Makefile +++ b/Makefile @@ -64,6 +64,8 @@ endif # operator-sdk OPERATOR_SDK_CLI ?= operator-sdk +# Controls whether the buildx command should include the push flag or not - Enables the testing of only the build portion without pushing +PUSH_IMAGE ?= true # Setting SHELL to bash allows bash commands to be executed by recipes. # This is a requirement for 'setup-envtest.sh' in the test target. @@ -200,10 +202,57 @@ docker-buildx: test ## Build and push docker image for the manager for cross-pla sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross - docker buildx create --name registry-operator-builder docker buildx use registry-operator-builder - - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross $(shell pwd) + $(MAKE) docker-buildx-helper - docker buildx rm registry-operator-builder rm Dockerfile.cross +# PRIVATE: Intended for internal use and is not meant to be called by a user +# This command helps control the flow for whether or not to push the multi-arch images or to only test the build +.PHONY: docker-buildx-helper +docker-buildx-helper: +ifeq ($(PUSH_IMAGE),true) + - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} --provenance=false -f Dockerfile.cross $(shell pwd) +else + - docker buildx build --platform=$(PLATFORMS) --tag ${IMG} --provenance=false -f Dockerfile.cross $(shell pwd) +endif + +# PRIVATE: Intended for internal use and is not meant to be called by a user +# This command helps control the flow for whether or not to push the multi-arch images or to only test the build +.PHONY: docker-bundle-buildx-helper +docker-bundle-buildx-helper: +ifeq ($(PUSH_IMAGE),true) + - docker buildx build --push --platform=${PLATFORMS} --tag ${BUNDLE_IMG} --provenance=false -f bundle.Dockerfile $(shell pwd) +else + - docker buildx build --platform=${PLATFORMS} --tag ${BUNDLE_IMG} --provenance=false -f bundle.Dockerfile $(shell pwd) +endif + +# Build the bundle image. +.PHONY: docker-bundle-buildx +docker-bundle-buildx: + - docker buildx create --name bundle-builder + docker buildx use bundle-builder + $(MAKE) docker-bundle-buildx-helper + - docker buildx rm bundle-builder + +# PRIVATE: Intended for internal use and is not meant to be called by a user +# This command helps control the flow for whether or not to push the multi-arch images or to only test the build +.PHONY: podman-buildx-helper +podman-buildx-helper: +ifeq ($(PUSH_IMAGE),true) + - podman manifest push ${IMG} +endif + +# Clone of docker-buildx command but redesigned to work with podman's workflow +.PHONY: podman-buildx +podman-buildx: test ## Build and push podman image for the manager for cross-platform support +# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile + sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross + - podman manifest create ${IMG} + - podman build --platform=$(PLATFORMS) --manifest ${IMG} -f Dockerfile.cross $(shell pwd) + $(MAKE) podman-buildx-helper + - podman manifest rm ${IMG} + rm Dockerfile.cross + # Build the podman image .PHONY: podman-build podman-build: From ee2aad8fca7fc3df569e5450e2426a970e0b40a9 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Wed, 22 May 2024 16:40:25 -0400 Subject: [PATCH 5/9] update ci for buildx commands Signed-off-by: Jordan Dubrick --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 44a958a..e09935a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -119,7 +119,7 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 - name: Check if operator docker build is working - run: docker build -f Dockerfile . + run: make docker-buildx operator-bundle-build: name: Check operator bundle build @@ -136,4 +136,4 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 - name: Build the operator's bundle image - run: make bundle-build + run: make docker-bundle-buildx From ad63409ca5d43777608371581170fd5de78c7dd4 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Mon, 27 May 2024 15:42:20 -0400 Subject: [PATCH 6/9] separate podman buildx to have build and push commands Signed-off-by: Jordan Dubrick --- Makefile | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 1a22040..d5f867d 100644 --- a/Makefile +++ b/Makefile @@ -234,22 +234,19 @@ docker-bundle-buildx: $(MAKE) docker-bundle-buildx-helper - docker buildx rm bundle-builder -# PRIVATE: Intended for internal use and is not meant to be called by a user -# This command helps control the flow for whether or not to push the multi-arch images or to only test the build -.PHONY: podman-buildx-helper -podman-buildx-helper: -ifeq ($(PUSH_IMAGE),true) - - podman manifest push ${IMG} -endif - # Clone of docker-buildx command but redesigned to work with podman's workflow -.PHONY: podman-buildx -podman-buildx: test ## Build and push podman image for the manager for cross-platform support -# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile +# Designed to build and push multi architecture images of the registry operator +# This utilizes a new Dockerfile to insert platform args to preserve the original Dockerfile +.PHONY: podman-buildx-build +podman-buildx-build: test sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross - podman manifest create ${IMG} - podman build --platform=$(PLATFORMS) --manifest ${IMG} -f Dockerfile.cross $(shell pwd) - $(MAKE) podman-buildx-helper + +# Contains cleanup steps to remove files and manifests created during build +.PHONY: podman-buildx-push +podman-buildx-push: + - podman manifest push ${IMG} - podman manifest rm ${IMG} rm Dockerfile.cross From 16948db947694be4388a97bcb2b3374cdd182435 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Mon, 27 May 2024 16:28:08 -0400 Subject: [PATCH 7/9] break buildx into build and push commands Signed-off-by: Jordan Dubrick --- Makefile | 65 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index d5f867d..e40ec5b 100644 --- a/Makefile +++ b/Makefile @@ -64,9 +64,6 @@ endif # operator-sdk OPERATOR_SDK_CLI ?= operator-sdk -# Controls whether the buildx command should include the push flag or not - Enables the testing of only the build portion without pushing -PUSH_IMAGE ?= true - # Setting SHELL to bash allows bash commands to be executed by recipes. # This is a requirement for 'setup-envtest.sh' in the test target. # Options are set to exit when a recipe line exits non-zero or a piped command fails. @@ -196,42 +193,54 @@ docker-push: # To properly provided solutions that supports more than one platform you should use this option. # **docker-buildx does not work with podman** PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le -.PHONY: docker-buildx -docker-buildx: test ## Build and push docker image for the manager for cross-platform support -# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile + +.PHONY: docker-buildx-build +docker-buildx-build: test + $(MAKE) docker-buildx-setup + - docker buildx build --platform=$(PLATFORMS) --tag ${IMG} --provenance=false -f Dockerfile.cross $(shell pwd) + $(MAKE) docker-buildx-cleanup + +.PHONY: docker-buildx-push +docker-buildx-push: test + $(MAKE) docker-buildx-setup + - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} --provenance=false -f Dockerfile.cross $(shell pwd) + $(MAKE) docker-buildx-cleanup + +# INTERNAL: Used to setup the docker-buildx command, not to be called by users +.PHONY: docker-buildx-setup +docker-buildx-setup: sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross - docker buildx create --name registry-operator-builder docker buildx use registry-operator-builder - $(MAKE) docker-buildx-helper + +# INTERNAL: Used to cleanup the docker-buildx command, not to be called by users +.PHONY: docker-buildx-cleanup +docker-buildx-cleanup: - docker buildx rm registry-operator-builder rm Dockerfile.cross -# PRIVATE: Intended for internal use and is not meant to be called by a user -# This command helps control the flow for whether or not to push the multi-arch images or to only test the build -.PHONY: docker-buildx-helper -docker-buildx-helper: -ifeq ($(PUSH_IMAGE),true) - - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} --provenance=false -f Dockerfile.cross $(shell pwd) -else - - docker buildx build --platform=$(PLATFORMS) --tag ${IMG} --provenance=false -f Dockerfile.cross $(shell pwd) -endif +# Build the bundle image. +.PHONY: docker-bundle-buildx-build +docker-bundle-buildx-build: + $(MAKE) docker-bundle-buildx-setup + - docker buildx build --platform=${PLATFORMS} --tag ${BUNDLE_IMG} --provenance=false -f bundle.Dockerfile $(shell pwd) + $(MAKE) docker-bundle-buildx-cleanup -# PRIVATE: Intended for internal use and is not meant to be called by a user -# This command helps control the flow for whether or not to push the multi-arch images or to only test the build -.PHONY: docker-bundle-buildx-helper -docker-bundle-buildx-helper: -ifeq ($(PUSH_IMAGE),true) +.PHONY: docker-bundle-buildx-push +docker-bundle-buildx-push: + $(MAKE) docker-bundle-buildx-setup - docker buildx build --push --platform=${PLATFORMS} --tag ${BUNDLE_IMG} --provenance=false -f bundle.Dockerfile $(shell pwd) -else - - docker buildx build --platform=${PLATFORMS} --tag ${BUNDLE_IMG} --provenance=false -f bundle.Dockerfile $(shell pwd) -endif + $(MAKE) docker-bundle-buildx-cleanup -# Build the bundle image. -.PHONY: docker-bundle-buildx -docker-bundle-buildx: +# INTERNAL: Used to setup the docker-bundle-buildx command, not to be called by users +.PHONY: docker-bundle-buildx-setup +docker-bundle-buildx-setup: - docker buildx create --name bundle-builder docker buildx use bundle-builder - $(MAKE) docker-bundle-buildx-helper + +# INTERNAL: Used to cleanup the docker-bundle-buildx command, not to be called by users +.PHONY: docker-bundle-buildx-cleanup +docker-bundle-buildx-cleanup: - docker buildx rm bundle-builder # Clone of docker-buildx command but redesigned to work with podman's workflow From 76e4b69f2935eaf5c12ca3546aca64612e3152a8 Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Mon, 27 May 2024 16:30:16 -0400 Subject: [PATCH 8/9] update workflows with new build and push commands Signed-off-by: Jordan Dubrick --- .github/workflows/ci.yaml | 10 ++-------- .github/workflows/dockerimage-push.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e09935a..5f6e238 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -108,9 +108,6 @@ jobs: name: Check operator container image build runs-on: ubuntu-latest - env: - PUSH_IMAGE: false - steps: - name: Check out code into the Go module directory uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 @@ -119,15 +116,12 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 - name: Check if operator docker build is working - run: make docker-buildx + run: make docker-buildx-build operator-bundle-build: name: Check operator bundle build runs-on: ubuntu-latest - env: - PUSH_IMAGE: false - steps: - name: Check out code into the Go module directory uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 @@ -136,4 +130,4 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 #v3.0.0 - name: Build the operator's bundle image - run: make docker-bundle-buildx + run: make docker-bundle-buildx-build diff --git a/.github/workflows/dockerimage-push.yaml b/.github/workflows/dockerimage-push.yaml index 7f54bbc..fcbf1e9 100644 --- a/.github/workflows/dockerimage-push.yaml +++ b/.github/workflows/dockerimage-push.yaml @@ -35,8 +35,8 @@ jobs: username: ${{ secrets.QUAY_USERNAME }} password: ${{ secrets.QUAY_PASSWORD }} - - name: Docker Buildx - Operator - run: "make docker-buildx" + - name: Build and push Operator with Docker Buildx + run: "make docker-buildx-push" push-operator-bundle: runs-on: ubuntu-latest @@ -54,5 +54,5 @@ jobs: username: ${{ secrets.QUAY_USERNAME }} password: ${{ secrets.QUAY_PASSWORD }} - - name: Docker Buildx - Bundle - run: "make docker-bundle-buildx" + - name: Build and push bundle with Docker Buildx + run: "make docker-bundle-buildx-push" From dccb50cde4c9ba304f72cea5c5eac7ebec29a99b Mon Sep 17 00:00:00 2001 From: Jordan Dubrick Date: Mon, 27 May 2024 16:33:51 -0400 Subject: [PATCH 9/9] update documentation with new commands Signed-off-by: Jordan Dubrick --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5ca2332..08c2873 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,6 @@ The repository contains a Makefile; building and deploying can be configured via | `ENVTEST` | Path to target `setup-envtest` binary | `${LOCALBIN}/setup-envtest` | | `TARGET_ARCH` | Target architecture for operator manager builds, possible values: `amd64`, `arm64`, `s390x`, `ppc64le` | `amd64` | | `TARGET_OS` | Target operating system for operator manager build, **only for `make manager`** | `linux` | -| `PUSH_IMAGE` | Controls whether or not `make docker-buildx`, `make docker-bundle-buildx` or `make podman-buildx` push to an external repository. If `false` they will only build. | `true` | | `PLATFORMS` | Target architecture(s) for `make docker-buildx` | All supported: `linux/arm64,linux/amd64,linux/s390x,linux/ppc64le` | | `KUSTOMIZE_INSTALL_SCRIPT` | URL of kustomize installation script, see [kustomize installation instructions](https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/) | `https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh` | @@ -110,9 +109,12 @@ Some of the rules supported by the makefile: | kustomize | install the kustomize tool, used by other commands | | docker-build | build registry operator container image using docker | | docker-push | push registry operator container image using docker | -| docker-buildx | build & push registry operator docker image for all supported architectures using docker| -| docker-bundle-buildx | build & push registry operator bundle docker image for all supported architectures using docker| -| podman-buildx | build & push registry operator docker image for all supported architectures using podman| +| docker-buildx-build | build registry operator docker image for all supported architectures using docker| +| docker-buildx-push | build & push registry operator docker image for all supported architectures using docker| +| docker-bundle-buildx-build | build registry operator bundle docker image for all supported architectures using docker| +| docker-bundle-buildx-push | build & push registry operator bundle docker image for all supported architectures using docker| +| podman-buildx-build | build registry operator docker image for all supported architectures using podman| +| podman-buildx-push | push registry operator docker image for all supported architectures using podman| | podman-build | build registry operator container image using podman | | podman-push | push registry operator container image using podman | | deploy | deploy operator to cluster |