From 09581cf65592bcaa97adb903746c99059957473f Mon Sep 17 00:00:00 2001 From: dd di cesare Date: Wed, 6 Nov 2024 17:15:48 +0100 Subject: [PATCH] [workflow] Building multiarch catalogs with uraimo/run-on-arch-action@v2 Signed-off-by: dd di cesare --- .github/workflows/build-images.yaml | 61 +++++++++++++++++++---------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-images.yaml b/.github/workflows/build-images.yaml index 05294987..4ac6b60b 100644 --- a/.github/workflows/build-images.yaml +++ b/.github/workflows/build-images.yaml @@ -159,9 +159,12 @@ jobs: run: echo "Image pushed to ${{ steps.push-to-quay.outputs.registry-paths }}" build-catalog: - name: Build and push catalog image + name: Build and push catalog image for arch ${{ matrix.arch }} needs: [build, build-bundle] runs-on: ubuntu-20.04 + strategy: + matrix: + arch: [ amd64, arm64, ppc64le, s390x ] if: github.ref_name == 'main' || startsWith(github.ref, 'refs/tags/v') # We cannot use `env.MAIN_BRANCH_NAME` because `env` context is not available to `job.if`. See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability steps: - name: Set up Go 1.21.x @@ -192,27 +195,42 @@ jobs: else echo "VERSION=${{ github.sha }}" >> $GITHUB_ENV fi - - name: Install qemu dependency - run: | - sudo apt-get update - sudo apt-get install -y qemu-user-static - - name: Run make catalog (main) + - name: Run make catalog (main) for arch ${{ matrix.arch }} + uses: uraimo/run-on-arch-action@v2 if: ${{ github.ref_name == env.MAIN_BRANCH_NAME }} - run: | - make catalog \ - REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} \ - VERSION=${{ env.VERSION }} \ - IMAGE_TAG=${{ github.sha }} \ - AUTHORINO_VERSION=${{ env.LATEST_AUTHORINO_GITREF }} \ - CHANNELS=${{ inputs.channels }} - - name: Run make catalog (release) + with: + arch: ${{ matrix.arch }} + distro: ubuntu22.04 + githubToken: ${{ github.token }} + install: | + sudo apt-get update + sudo apt-get install -y qemu-user-static + run: | + make catalog \ + REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} \ + VERSION=${{ env.VERSION }} \ + IMAGE_TAG=${{ github.sha }} \ + AUTHORINO_VERSION=${{ env.LATEST_AUTHORINO_GITREF }} \ + CHANNELS=${{ inputs.channels }} \ + ARCH=${{ matrix.arch }} + + - name: Run make catalog (release) for arch ${{ matrix.arch }} + uses: uraimo/run-on-arch-action@v2 if: ${{ github.ref_name != env.MAIN_BRANCH_NAME }} - run: | - make catalog \ - REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} \ - VERSION=${{ env.VERSION }} \ - AUTHORINO_VERSION=${{ github.event.inputs.authorinoVersion }} \ - CHANNELS=${{ inputs.channels }} + with: + arch: ${{ matrix.arch }} + distro: ubuntu22.04 + githubToken: ${{ github.token }} + install: | + sudo apt-get update + sudo apt-get install -y qemu-user-static + run: | + make catalog \ + REGISTRY=${{ env.IMG_REGISTRY_HOST }} ORG=${{ env.IMG_REGISTRY_ORG }} \ + VERSION=${{ env.VERSION }} \ + AUTHORINO_VERSION=${{ env.LATEST_AUTHORINO_GITREF }} \ + CHANNELS=${{ inputs.channels }} \ + ARCH=${{ matrix.arch }} - name: Git diff run: git diff - name: Build Image @@ -221,7 +239,8 @@ jobs: with: image: ${{ env.OPERATOR_NAME }}-catalog tags: ${{ env.IMG_TAGS }} - platforms: linux/amd64,linux/arm64 + platform: ${{ matrix.arch }} + arch: ${{ matrix.arch }} context: ./catalog dockerfiles: | ./catalog/${{ env.OPERATOR_NAME }}-catalog.Dockerfile