From 0ebda3e101f2011fc5a0978f06e7a6f7c954776d Mon Sep 17 00:00:00 2001 From: Paige Patton <64206430+paigerube14@users.noreply.github.com> Date: Fri, 20 Mar 2026 10:09:33 -0500 Subject: [PATCH] test multi platform (#1194) Signed-off-by: Paige Patton --- .github/workflows/docker-image.yml | 122 +++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 31 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index c70ac1f5..b4628e36 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -6,48 +6,108 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner }} + strategy: + matrix: + include: + - platform: amd64 + runner: ubuntu-latest + - platform: arm64 + runner: ubuntu-24.04-arm steps: - name: Check out code uses: actions/checkout@v3 - - name: Build the Docker images - if: startsWith(github.ref, 'refs/tags') - run: | - ./containers/compile_dockerfile.sh - docker build --no-cache -t quay.io/krkn-chaos/krkn containers/ --build-arg TAG=${GITHUB_REF#refs/tags/} - docker tag quay.io/krkn-chaos/krkn quay.io/redhat-chaos/krkn - docker tag quay.io/krkn-chaos/krkn quay.io/krkn-chaos/krkn:${GITHUB_REF#refs/tags/} - docker tag quay.io/krkn-chaos/krkn quay.io/redhat-chaos/krkn:${GITHUB_REF#refs/tags/} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Test Build the Docker images - if: ${{ github.event_name == 'pull_request' }} + if: github.event_name == 'pull_request' run: | ./containers/compile_dockerfile.sh - docker build --no-cache -t quay.io/krkn-chaos/krkn containers/ --build-arg PR_NUMBER=${{ github.event.pull_request.number }} - - name: Login in quay + docker buildx build --no-cache \ + --platform linux/${{ matrix.platform }} \ + -t quay.io/krkn-chaos/krkn \ + containers/ \ + --build-arg PR_NUMBER=${{ github.event.pull_request.number }} + + - name: Login to krkn-chaos quay if: startsWith(github.ref, 'refs/tags') - run: docker login quay.io -u ${QUAY_USER} -p ${QUAY_TOKEN} - env: - QUAY_USER: ${{ secrets.QUAY_USERNAME }} - QUAY_TOKEN: ${{ secrets.QUAY_PASSWORD }} - - name: Push the KrknChaos Docker images + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_PASSWORD }} + + - name: Login to redhat-chaos quay + if: startsWith(github.ref, 'refs/tags') + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_USER_1 }} + password: ${{ secrets.QUAY_TOKEN_1 }} + + - name: Build and push arch-specific images if: startsWith(github.ref, 'refs/tags') run: | - docker push quay.io/krkn-chaos/krkn - docker push quay.io/krkn-chaos/krkn:${GITHUB_REF#refs/tags/} - - name: Login in to redhat-chaos quay - if: startsWith(github.ref, 'refs/tags/v') - run: docker login quay.io -u ${QUAY_USER} -p ${QUAY_TOKEN} - env: - QUAY_USER: ${{ secrets.QUAY_USER_1 }} - QUAY_TOKEN: ${{ secrets.QUAY_TOKEN_1 }} - - name: Push the RedHat Chaos Docker images - if: startsWith(github.ref, 'refs/tags') - run: | - docker push quay.io/redhat-chaos/krkn - docker push quay.io/redhat-chaos/krkn:${GITHUB_REF#refs/tags/} + ./containers/compile_dockerfile.sh + TAG=${GITHUB_REF#refs/tags/} + docker buildx build --no-cache \ + --platform linux/${{ matrix.platform }} \ + -t quay.io/krkn-chaos/krkn:latest-${{ matrix.platform }} \ + -t quay.io/krkn-chaos/krkn:${TAG}-${{ matrix.platform }} \ + -t quay.io/redhat-chaos/krkn:latest-${{ matrix.platform }} \ + -t quay.io/redhat-chaos/krkn:${TAG}-${{ matrix.platform }} \ + containers/ \ + --build-arg TAG=${TAG} \ + --push + + manifest: + runs-on: ubuntu-latest + needs: build + if: startsWith(github.ref, 'refs/tags') + steps: + - name: Login to krkn-chaos quay + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_PASSWORD }} + + - name: Create and push KrknChaos manifests + run: | + TAG=${GITHUB_REF#refs/tags/} + docker manifest create quay.io/krkn-chaos/krkn:${TAG} \ + quay.io/krkn-chaos/krkn:${TAG}-amd64 \ + quay.io/krkn-chaos/krkn:${TAG}-arm64 + docker manifest push quay.io/krkn-chaos/krkn:${TAG} + + docker manifest create quay.io/krkn-chaos/krkn:latest \ + quay.io/krkn-chaos/krkn:latest-amd64 \ + quay.io/krkn-chaos/krkn:latest-arm64 + docker manifest push quay.io/krkn-chaos/krkn:latest + + - name: Login to redhat-chaos quay + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_USER_1 }} + password: ${{ secrets.QUAY_TOKEN_1 }} + + - name: Create and push RedHat Chaos manifests + run: | + TAG=${GITHUB_REF#refs/tags/} + docker manifest create quay.io/redhat-chaos/krkn:${TAG} \ + quay.io/redhat-chaos/krkn:${TAG}-amd64 \ + quay.io/redhat-chaos/krkn:${TAG}-arm64 + docker manifest push quay.io/redhat-chaos/krkn:${TAG} + + docker manifest create quay.io/redhat-chaos/krkn:latest \ + quay.io/redhat-chaos/krkn:latest-amd64 \ + quay.io/redhat-chaos/krkn:latest-arm64 + docker manifest push quay.io/redhat-chaos/krkn:latest + - name: Rebuild krkn-hub - if: startsWith(github.ref, 'refs/tags') uses: redhat-chaos/actions/krkn-hub@main with: QUAY_USER: ${{ secrets.QUAY_USERNAME }}