From 6e2f13c13bcf1cba28c3d049a4e058dea5374077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edgar=20Hern=C3=A1ndez?= <23639005+israel-hdez@users.noreply.github.com> Date: Thu, 13 Jul 2023 14:39:22 -0600 Subject: [PATCH] Adapt GH-workflows to correctly push to ODH container repositories MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Workflows are changed to push to Quay.io. * The go.yml workflow is changed to omit updating the coverage badge (we don't have one, for now). * The README.md file is updated to right ODH urls. Signed-off-by: Edgar Hernández <23639005+israel-hdez@users.noreply.github.com> --- .github/workflows/agent-docker-publish.yml | 25 ++++++++++++------- .github/workflows/go.yml | 4 ++- .../kserve-controller-docker-publish.yml | 21 ++++++++++------ .github/workflows/router-docker-publish.yml | 25 ++++++++++++------- .../storage-initializer-docker-publisher.yml | 14 ++++++++--- README.md | 10 +++----- 6 files changed, 63 insertions(+), 36 deletions(-) diff --git a/.github/workflows/agent-docker-publish.yml b/.github/workflows/agent-docker-publish.yml index 5b6b9ec732..af8b72757d 100644 --- a/.github/workflows/agent-docker-publish.yml +++ b/.github/workflows/agent-docker-publish.yml @@ -5,6 +5,7 @@ on: # Publish `master` as Docker `latest` image. branches: - master + - release-* # Publish `v1.2.3` tags as releases. tags: @@ -14,7 +15,7 @@ on: pull_request: env: - IMAGE_NAME: agent + IMAGE_NAME: kserve-agent jobs: # Run tests. @@ -54,15 +55,16 @@ jobs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Login to DockerHub + - name: Login to Quay uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASSWORD }} + registry: quay.io + username: ${{ secrets.QUAY_USER }} + password: ${{ secrets.QUAY_PASSWORD }} - name: export version variable run: | - IMAGE_ID=kserve/$IMAGE_NAME + IMAGE_ID=quay.io/${{ vars.QUAY_OWNER }}/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') @@ -75,9 +77,14 @@ jobs: # Use Docker `latest` tag convention [ "$VERSION" == "master" ] && VERSION=latest - - echo VERSION=$VERSION >> $GITHUB_ENV - echo IMAGE_ID=$IMAGE_ID >> $GITHUB_ENV + [[ "$VERSION" =~ ^release- ]] && VERSION=$(echo $VERSION | sed 's/^release-//')-latest + + TAGS=$IMAGE_ID:$VERSION + + # If a vX.Y.Z release is being built, also update the vX.Y tag. + [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && TAGS=$TAGS,$IMAGE_ID:$(echo $VERSION | sed 's/\(.*\)\.[[:digit:]]\+$/\1/') + + echo CONTAINER_TAGS=$TAGS >> $GITHUB_ENV - name: Build and push uses: docker/build-push-action@v3 @@ -86,4 +93,4 @@ jobs: context: . file: agent.Dockerfile push: true - tags: ${{ env.IMAGE_ID }}:${{ env.VERSION }} + tags: ${{ env.CONTAINER_TAGS }} diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 4bfb82594b..26486a1b09 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -47,7 +47,9 @@ jobs: echo "Coverage output is ${{ steps.test.outputs.coverage }}" - name: Update coverage badge - if: github.ref == 'refs/heads/master' + # Disabling, because this tries to update a Gist owned by KServe. + # More info: https://github.com/opendatahub-io/kserve/issues/29 + if: false # github.ref == 'refs/heads/master' uses: schneegans/dynamic-badges-action@v1.4.0 with: auth: ${{ secrets.GIST_SECRET }} diff --git a/.github/workflows/kserve-controller-docker-publish.yml b/.github/workflows/kserve-controller-docker-publish.yml index 90def6755d..f7c2f2b9c2 100644 --- a/.github/workflows/kserve-controller-docker-publish.yml +++ b/.github/workflows/kserve-controller-docker-publish.yml @@ -5,6 +5,7 @@ on: # Publish `master` as Docker `latest` image. branches: - master + - release-* # Publish `v1.2.3` tags as releases. tags: @@ -52,15 +53,16 @@ jobs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Login to DockerHub + - name: Login to Quay uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASSWORD }} + registry: quay.io + username: ${{ secrets.QUAY_USER }} + password: ${{ secrets.QUAY_PASSWORD }} - name: export version variable run: | - IMAGE_ID=kserve/$IMAGE_NAME + IMAGE_ID=quay.io/${{ vars.QUAY_OWNER }}/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') @@ -73,9 +75,14 @@ jobs: # Use Docker `latest` tag convention [ "$VERSION" == "master" ] && VERSION=latest + [[ "$VERSION" =~ ^release- ]] && VERSION=$(echo $VERSION | sed 's/^release-//')-latest - echo VERSION=$VERSION >> $GITHUB_ENV - echo IMAGE_ID=$IMAGE_ID >> $GITHUB_ENV + TAGS=$IMAGE_ID:$VERSION + + # If a vX.Y.Z release is being built, also update the vX.Y tag. + [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && TAGS=$TAGS,$IMAGE_ID:$(echo $VERSION | sed 's/\(.*\)\.[[:digit:]]\+$/\1/') + + echo CONTAINER_TAGS=$TAGS >> $GITHUB_ENV - name: Build and push uses: docker/build-push-action@v3 @@ -84,4 +91,4 @@ jobs: context: . file: Dockerfile push: true - tags: ${{ env.IMAGE_ID }}:${{ env.VERSION }} + tags: ${{ env.CONTAINER_TAGS }} diff --git a/.github/workflows/router-docker-publish.yml b/.github/workflows/router-docker-publish.yml index ad701ce419..e7f8b329fd 100644 --- a/.github/workflows/router-docker-publish.yml +++ b/.github/workflows/router-docker-publish.yml @@ -5,6 +5,7 @@ on: # Publish `master` as Docker `latest` image. branches: - master + - release-* # Publish `v1.2.3` tags as releases. tags: @@ -14,7 +15,7 @@ on: pull_request: env: - IMAGE_NAME: router + IMAGE_NAME: kserve-router jobs: # Run tests. @@ -52,15 +53,16 @@ jobs: - name: Setup Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Login to DockerHub + - name: Login to Quay uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_PASSWORD }} + registry: quay.io + username: ${{ secrets.QUAY_USER }} + password: ${{ secrets.QUAY_PASSWORD }} - name: export version variable run: | - IMAGE_ID=kserve/$IMAGE_NAME + IMAGE_ID=quay.io/${{ vars.QUAY_OWNER }}/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') @@ -73,9 +75,14 @@ jobs: # Use Docker `latest` tag convention [ "$VERSION" == "master" ] && VERSION=latest - - echo VERSION=$VERSION >> $GITHUB_ENV - echo IMAGE_ID=$IMAGE_ID >> $GITHUB_ENV + [[ "$VERSION" =~ ^release- ]] && VERSION=$(echo $VERSION | sed 's/^release-//')-latest + + TAGS=$IMAGE_ID:$VERSION + + # If a vX.Y.Z release is being built, also update the vX.Y tag. + [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && TAGS=$TAGS,$IMAGE_ID:$(echo $VERSION | sed 's/\(.*\)\.[[:digit:]]\+$/\1/') + + echo CONTAINER_TAGS=$TAGS >> $GITHUB_ENV - name: Build and push uses: docker/build-push-action@v3 @@ -84,4 +91,4 @@ jobs: context: . file: router.Dockerfile push: true - tags: ${{ env.IMAGE_ID }}:${{ env.VERSION }} + tags: ${{ env.CONTAINER_TAGS }} diff --git a/.github/workflows/storage-initializer-docker-publisher.yml b/.github/workflows/storage-initializer-docker-publisher.yml index 6543f4ca8f..5444d06ec6 100644 --- a/.github/workflows/storage-initializer-docker-publisher.yml +++ b/.github/workflows/storage-initializer-docker-publisher.yml @@ -5,6 +5,7 @@ on: # Publish `master` as Docker `latest` image. branches: - master + - release-* # Publish `v1.2.3` tags as releases. tags: @@ -14,7 +15,7 @@ on: pull_request: env: - IMAGE_NAME: storage-initializer + IMAGE_NAME: kserve-storage-initializer jobs: # Run tests. @@ -53,11 +54,11 @@ jobs: docker buildx build . --file storage-initializer.Dockerfile --tag $IMAGE_NAME - name: Log into registry - run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + run: docker login -u ${{ secrets.QUAY_USER }} -p ${{ secrets.QUAY_PASSWORD }} quay.io - name: Push image run: | - IMAGE_ID=kserve/$IMAGE_NAME + IMAGE_ID=quay.io/${{ vars.QUAY_OWNER }}/$IMAGE_NAME # Change all uppercase to lowercase IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') @@ -70,10 +71,15 @@ jobs: # Use Docker `latest` tag convention [ "$VERSION" == "master" ] && VERSION=latest + [[ "$VERSION" =~ ^release- ]] && VERSION=$(echo $VERSION | sed 's/^release-//')-latest echo IMAGE_ID=$IMAGE_ID echo VERSION=$VERSION docker tag $IMAGE_NAME $IMAGE_ID:$VERSION docker push $IMAGE_ID:$VERSION - + + # If a vX.Y.Z release is being built, also update the vX.Y tag. + [[ "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && MINOR_VERSION=$(echo $VERSION | sed 's/\(.*\)\.[[:digit:]]\+$/\1/') + [ ! -z "$MINOR_VERSION" ] && docker tag $IMAGE_NAME $IMAGE_ID:$MINOR_VERSION + [ ! -z "$MINOR_VERSION" ] && docker push $IMAGE_ID:$MINOR_VERSION || true \ No newline at end of file diff --git a/README.md b/README.md index 6a733c363a..47d735831c 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ # KServe -[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/kserve/kserve) -[![Coverage Status](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/andyi2it/5174bd748ac63a6e4803afea902e9810/raw/coverage.json)](https://github.com/kserve/kserve/actions/workflows/go.yml) -[![Go Report Card](https://goreportcard.com/badge/github.com/kserve/kserve)](https://goreportcard.com/report/github.com/kserve/kserve) -[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6643/badge)](https://bestpractices.coreinfrastructure.org/projects/6643) -[![Releases](https://img.shields.io/github/release-pre/kserve/kserve.svg?sort=semver)](https://github.com/kserve/kserve/releases) -[![LICENSE](https://img.shields.io/github/license/kserve/kserve.svg)](https://github.com/kserve/kserve/blob/master/LICENSE) +[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/opendatahub-io/kserve) +[![Go Report Card](https://goreportcard.com/badge/github.com/opendatahub-io/kserve)](https://goreportcard.com/report/github.com/opendatahub-io/kserve) +[![Releases](https://img.shields.io/github/release-pre/opendatahub-io/kserve.svg?sort=semver)](https://github.com/opendatahub-io/kserve/releases) +[![LICENSE](https://img.shields.io/github/license/opendatahub-io/kserve.svg)](https://github.com/opendatahub-io/kserve/blob/master/LICENSE) [![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social)](https://kubeflow.slack.com/archives/CH6E58LNP) KServe provides a Kubernetes [Custom Resource Definition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) for serving machine learning (ML) models on arbitrary frameworks. It aims to solve production model serving use cases by providing performant, high abstraction interfaces for common ML frameworks like Tensorflow, XGBoost, ScikitLearn, PyTorch, and ONNX.