-
Notifications
You must be signed in to change notification settings - Fork 136
Description
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
godependency togithub.com/kserve/kserveingo.modand run
go mod tidy. -
Update the CRDs under
config/crd/baseswith the CRDs from thekserve/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
-
Create Release Branches
Create a release branch from main in the form of release-${MAJOR}.${MINOR} in these 5 repositories:
Update Release Tags
-
Create new (pre-)release tags (
v...-rc0) in these repositories: -
Verify image tags were pushed to DockerHub:
-
(and 4) In this
modelmesh-servingrepository, on therelease-*branch, update the version tags, submit your PR to therelease-*branch that was created earlier and wait for it to merge.
Generate Release Artifacts and Publish the Release
-
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.yamlIf you see
Error: unknown flag: --load-restrictorupgrade yourkustomizeversion to 4.x. -
Generate config archive on the
release-*branch. The scriptlet below automatically
determines the release version and chooses the version of thetarcommand for
either Linux or macOS. Verify the correct releaseVERSIONwas 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
-
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-controllerimage will be published via GitHub Actions.git tag $VERSION git push upstream $VERSION echo https://github.com/kserve/modelmesh-serving/releases/new?tag=${VERSION}
-
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. -
Compare the release and release artifacts to those of previous releases to make
sure nothing was missed. -
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 therelease-*
branch. -
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.yamlhack/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.yamlcharts/kserve-resources/templates/clusterservingruntimes.yamlcharts/kserve-resources/templates/configmap.yamlcharts/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.yamlcharts/kserve/templates/clusterrole.yamlcharts/kserve/templates/configmap.yamlcharts/kserve/templates/deployment.yamlcharts/kserve/templates/networkpolicy.yamlcharts/kserve/templates/rolebinding.yamlcharts/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: