diff --git a/.github/workflows/agent-docker-publish.yml b/.github/workflows/agent-docker-publish.yml index 5b6b9ec732f..7ccd6e8554c 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 -e 's/\(.*\)\.\d+$/\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 4bfb82594b7..ceb56bcd30c 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -47,7 +47,8 @@ jobs: echo "Coverage output is ${{ steps.test.outputs.coverage }}" - name: Update coverage badge - if: github.ref == 'refs/heads/master' + # The dash at the end makes this to never run, while we set up the ODH badge. + if: 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 90def6755de..64b1adf23c2 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 -e 's/\(.*\)\.\d+$/\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 ad701ce4199..db975e31434 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 -e 's/\(.*\)\.\d+$/\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 6543f4ca8f0..f165d00432d 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 -e 's/\(.*\)\.\d+$/\1/') + [ ! -z "MINOR_VERSION" ] && docker tag $IMAGE_NAME $IMAGE_ID:$MINOR_VERSION + [ ! -z "MINOR_VERSION" ] && docker push $IMAGE_ID:$MINOR_VERSION \ No newline at end of file diff --git a/README.md b/README.md index 6a733c363a5..47d735831c3 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.