Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

release: v0.12.0 #493

Open
24 tasks done
israel-hdez opened this issue Mar 12, 2024 · 1 comment
Open
24 tasks done

release: v0.12.0 #493

israel-hdez opened this issue Mar 12, 2024 · 1 comment
Assignees

Comments

@israel-hdez
Copy link
Collaborator

israel-hdez commented Mar 12, 2024

Release process reference: https://github.com/kserve/modelmesh-serving/blob/3e755a909cbdcbadb6fb86cbd48c83ae46e68f9a/docs/release-process.md

Release Process

Prepare the Release

Check pending vulnerability fixes, features and bugs:

In modelmesh-serving, create a PR against main that:

  • Updates the go dependency to github.com/kserve/kserve in go.mod and run
    go mod tidy.

  • Update the CRDs under config/crd/bases with the CRDs from the kserve/kserve
    repository (https://github.com/kserve/kserve/tree/master/config/crd) using their
    latest pre-release version:

    • config/crd/bases/serving.kserve.io_inferenceservices.yaml
    • config/crd/bases/serving.kserve.io_clusterservingruntimes.yaml
    • config/crd/bases/serving.kserve.io_servingruntimes.yaml
  • release: Update KServe to v0.12.0 #497

Create Release Branches

Create a release branch from main in the form of release-${MAJOR}.${MINOR} in these 5 repositories:

Update Release Tags

  1. Create new (pre-)release tags (v...-rc0) in these repositories:

  2. Verify image tags were pushed to DockerHub:

  3. (and 4) In this modelmesh-serving repository, on the release-* branch, update the version tags, submit your PR to the release-* branch that was created earlier and wait for it to merge.

  4. docs: Update version tags after v0.12.0 release #502

Generate Release Artifacts and Publish the Release

  1. Generate the release manifests on the release-* branch:

    kustomize build config/runtimes --load-restrictor LoadRestrictionsNone > modelmesh-runtimes.yaml
    cp config/dependencies/quickstart.yaml modelmesh-quickstart-dependencies.yaml

    If you see Error: unknown flag: --load-restrictor upgrade your kustomize version to 4.x.

  2. Generate config archive on the release-* branch. The scriptlet below automatically
    determines the release version and chooses the version of the tar command for
    either Linux or macOS. Verify the correct release VERSION was found.

    VERSION=$( grep -o -E "newTag: .*$" config/manager/kustomization.yaml | sed 's/newTag: //' )
    TAR_FILE="config-${VERSION}.tar.gz"
    
    echo "Release: ${VERSION}"
    
    if $(tar --version | grep -q 'bsd'); then
      tar -zcvf ${TAR_FILE} -s /config/config-${VERSION}/ config/;
    else
      tar -zcvf ${TAR_FILE} config/ --transform s/config/config-${VERSION}/;
    fi
  3. Create a new tag on the release-* branch and push it to GitHub using the commands
    below, or, create a new tag in the next step using the GitHub UI. The new
    kserve/modelmesh-controller image will be published via GitHub Actions.

    git tag $VERSION
    git push upstream $VERSION
    
    echo https://github.com/kserve/modelmesh-serving/releases/new?tag=${VERSION}
  4. Create the new release in the GitHub UI from the release-* branch (or from the
    tag created in the previous step). Enter the release tag value (e.g. v0.11.0) in
    the "Release title" field and upload the generated installation manifests ("Release assets")
    in the "Attach binaries ..." section. Click the "Generate release notes" button which
    will generate the release description.

    Note, if you generated a pre-release (e.g. v0.11.0-rc0) then copy the release
    notes from that and remove them from the pre-release description and revise accordingly.

    https://github.com/kserve/modelmesh-serving/releases/new

  5. Compare the release and release artifacts to those of previous releases to make
    sure nothing was missed.

  6. Once the release as been published (a new tag has been pushed), verify the check
    results by clicking on the check mark (✓) next to the latest commit on the release-*
    branch.

  7. Verify that the newly released version of the
    modelmesh-controller
    was pushed to DockerHub.

Update the KServe Helm Charts

Fork and clone the kserve/kserve repository
and update all references to the old ModelMesh versions. At the time of the v0.10.0
release the following files needed to be updated.

  • charts/kserve-resources/values.yaml
  • hack/install_kserve_mm.sh

Furthermore, the helm charts under charts/kserve-resources/templates which are
used to install ModelMesh as part of KServe need to be updated with the changes
in the respective manifests from the kserve/modelmesh-serving repository found
in the config folder.

For reference, for the v0.10.0 release the following charts in the kserve repo
had to be updated:

  • charts/kserve-resources/templates/clusterrole.yaml
  • charts/kserve-resources/templates/clusterservingruntimes.yaml
  • charts/kserve-resources/templates/configmap.yaml
  • charts/kserve-resources/templates/deployment.yaml

For the v0.9.0 release the following charts had to be updated:

  • charts/kserve/crds/serving.kserve.io_predictor.yaml
  • charts/kserve/templates/clusterrole.yaml
  • charts/kserve/templates/configmap.yaml
  • charts/kserve/templates/deployment.yaml
  • charts/kserve/templates/networkpolicy.yaml
  • charts/kserve/templates/rolebinding.yaml
  • charts/kserve/templates/servingruntimes.yaml

Update the KServe Website

In the kserve/website repository, update all reference to the previous ModelMesh
release. As of v0.10.0, docs/admin/modelmesh.md was the only Markdown file to
be updated.

Release Blog

Work with Dan Sun on a joint
release blog.

For reference, here are a few examples of previous release blogs featuring ModelMesh:

And the corresponding PRs to illustrate the process and the participants:

@israel-hdez
Copy link
Collaborator Author

@ckadner @rafvasq OK, I correctly created this: https://github.com/kserve/modelmesh-serving/releases/tag/v0.12.0-rc0.

So, I think we can start testing with that and, later, do the final 0.12.0.
BTW, there is this pending PR for main: #502.

I was thinking... I'm not sure if we should upgrade the docs for an RC... If you prefer it, I can change the PR to point to docs of 0.12.0-rc0. But given this is considered a pre-release, I wonder if it would be better to change docs until 0.12.0 final is generated?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant