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.