From 8125d08dd5369a39c391f5531e55e581109fbb0e Mon Sep 17 00:00:00 2001 From: Andrew Obuchowicz Date: Thu, 11 Jan 2024 22:00:49 -0500 Subject: [PATCH] Feat: support multi-arch builds for releases Signed-off-by: Andrew Obuchowicz --- .github/workflows/release.yml | 6 ++++++ make-release.sh | 19 +++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d783553bf..bd40f92f7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,6 +30,12 @@ jobs: with: go-version: 1.20.10 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Clone source code uses: actions/checkout@v3 with: diff --git a/make-release.sh b/make-release.sh index 6f57f9483..cdaa62d74 100755 --- a/make-release.sh +++ b/make-release.sh @@ -23,6 +23,7 @@ DWO_BUNDLE_QUAY_REPO="${DWO_BUNDLE_QUAY_REPO:-quay.io/devfile/devworkspace-opera DWO_INDEX_IMAGE="${DWO_INDEX_IMAGE:-quay.io/devfile/devworkspace-operator-index:release}" DWO_DIGEST_INDEX_IMAGE="${DWO_DIGEST_INDEX_IMAGE:-quay.io/devfile/devworkspace-operator-index:release-digest}" MAIN_BRANCH="main" +ARCHITECTURES="linux/amd64,linux/arm64,linux/ppc64le,linux/s390x" VERBOSE="" TMP="" @@ -156,10 +157,20 @@ update_images() { build_and_push_images() { DWO_QUAY_IMG="${DWO_QUAY_REPO}:${VERSION}" PROJECT_CLONE_QUAY_IMG="${PROJECT_CLONE_QUAY_REPO}:${VERSION}" - docker build -t "${DWO_QUAY_IMG}" -f ./build/Dockerfile . - $DRY_RUN docker push "${DWO_QUAY_IMG}" - docker build -t "${PROJECT_CLONE_QUAY_IMG}" -f ./project-clone/Dockerfile . - $DRY_RUN docker push "${PROJECT_CLONE_QUAY_IMG}" + + if [ "$DRY_RUN" == "dryrun" ]; then + docker buildx build . -t "${DWO_QUAY_IMG}" -f ./build/Dockerfile \ + --platform "$ARCHITECTURES" + docker buildx build . -t "${PROJECT_CLONE_QUAY_IMG}" -f ./project-clone/Dockerfile \ + --platform "$ARCHITECTURES" + else + docker buildx build . -t "${DWO_QUAY_IMG}" -f ./build/Dockerfile \ + --platform "$ARCHITECTURES" \ + --push + docker buildx build . -t "${PROJECT_CLONE_QUAY_IMG}" -f ./project-clone/Dockerfile \ + --platform "$ARCHITECTURES" \ + --push + fi } # Commit and push changes in local repo to remote (respecting DRY_RUN setting). If the branch cannot be pushed to,