From 2fdf6ad66fc3a40b77bdf8a289ac5e632c3ab2d2 Mon Sep 17 00:00:00 2001 From: adilhusain-s <95226191+adilhusain-s@users.noreply.github.com> Date: Fri, 23 Dec 2022 06:36:19 +0530 Subject: [PATCH] Adding multi-arch support for linux-ppc64le for qpext (#2604) * Updating qpext Dockerfile for multi-arch support Signed-off-by: adilhusain-s * Adding support for multiple architectures in CI for qpext docker image Signed-off-by: adilhusain-s Signed-off-by: adilhusain-s --- .github/workflows/qpext-docker-publish.yml | 38 ++++++++++++++-------- qpext/qpext.Dockerfile | 2 +- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/.github/workflows/qpext-docker-publish.yml b/.github/workflows/qpext-docker-publish.yml index 144ac152dbc..331d5b4c6a5 100644 --- a/.github/workflows/qpext-docker-publish.yml +++ b/.github/workflows/qpext-docker-publish.yml @@ -15,6 +15,7 @@ on: env: IMAGE_NAME: qpext + DOCKER_USER: ${{secrets.DOCKER_USER}} jobs: # Run tests. @@ -47,17 +48,21 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Build image - run: | - cd qpext - docker build . --file qpext.Dockerfile --tag $IMAGE_NAME + - name: Setup QEMU + uses: docker/setup-qemu-action@v2 + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v2 - - name: Log into registry - run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_PASSWORD }} - - name: Push image + - name: export version variable run: | - IMAGE_ID=kserve/$IMAGE_NAME + IMAGE_ID=$DOCKER_USER/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') @@ -71,9 +76,14 @@ jobs: # Use Docker `latest` tag convention [ "$VERSION" == "master" ] && VERSION=latest - echo IMAGE_ID=$IMAGE_ID - echo VERSION=$VERSION - - docker tag $IMAGE_NAME $IMAGE_ID:$VERSION - docker push $IMAGE_ID:$VERSION - + echo VERSION=$VERSION >> $GITHUB_ENV + echo IMAGE_ID=$IMAGE_ID >> $GITHUB_ENV + + - name: Build and push + uses: docker/build-push-action@v3 + with: + platforms: linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x + context: "{{defaultContext}}:qpext" + file: qpext.Dockerfile + push: true + tags: ${{ env.IMAGE_ID }}:${{ env.VERSION }} diff --git a/qpext/qpext.Dockerfile b/qpext/qpext.Dockerfile index 34beea04639..2edb73c358b 100644 --- a/qpext/qpext.Dockerfile +++ b/qpext/qpext.Dockerfile @@ -12,7 +12,7 @@ COPY cmd/qpext cmd/qpext COPY logger.go logger.go # Build -RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o qpext ./cmd/qpext +RUN CGO_ENABLED=0 go build -a -o qpext ./cmd/qpext FROM gcr.io/distroless/static:nonroot WORKDIR /ko-app