-
Write permission for the Kubeflow SDK repository.
-
Create a GitHub Token and set it as
GITHUB_TOKENenvironment variable.
Kubeflow SDK version format follows Python's PEP 440.
Kubeflow SDK versions are in the format of X.Y.Z, where X is the major version, Y is
the minor version, and Z is the patch version.
The patch version contains only bug fixes.
Additionally, Kubeflow SDK does pre-releases in this format: X.Y.ZrcN where N is a number
of the Nth release candidate (RC) before an upcoming public release named X.Y.Z.
Kubeflow SDK releases are tagged with tags like X.Y.Z, for example 0.1.0.
Release branches are in the format of release-X.Y, where X.Y stands for
the minor release.
X.Y.Z releases are released from the release-X.Y branch. For example,
0.1.0 release should be on release-0.1 branch.
If you want to push changes to the release-X.Y release branch, you have to
cherry pick your changes from the main branch and submit a PR.
Kubeflow SDK uses a directory-based changelog structure under CHANGELOG/:
CHANGELOG/
├── CHANGELOG-0.1.md # All 0.1.x releases
├── CHANGELOG-0.2.md # All 0.2.x releases
└── CHANGELOG-0.3.md # All 0.3.x releases
Each file contains releases for that minor series, with the most recent releases at the top.
The Kubeflow SDK uses an automated release process with GitHub Actions:
- Local Preparation: Update version and generate changelog locally
- Automated CI: GitHub Actions handles branch creation, tagging, building, and publishing
- Manual Approvals: PyPI and GitHub releases require manual approval
-
Generate version and changelog locally (this will sync dependencies automatically):
export GITHUB_TOKEN=<your_github_token> make release VERSION=<X.Y.Z> # e.g. make release VERSION=0.3.1
This updates:
kubeflow/__init__.pywith__version__ = "X.Y.Z"CHANGELOG/CHANGELOG-X.Y.mdwith a new top entry# [X.Y.Z] (YYYY-MM-DD)
- Open a PR:
- Review
kubeflow/__init__.pyandCHANGELOG/CHANGELOG-X.Y.md - For latest minor series: Open a PR to
mainand get it reviewed and merged - For older minor series patch (e.g. 0.1.1 when main is at 0.2.x): Checkout the
release-X.Ybranch, commit changes and then open a PR to the correspondingrelease-X.Ybranch
- Review
The Release GitHub Action automatically:
- Prepare: Detects the version change in
kubeflow/__init__.pyand creates or updates therelease-X.Ybranch - Build: Runs tests and builds the package on the release branch
- Tag: Creates and pushes the release tag
- Publish: Publishes to PyPI (requires manual approval)
- Release: Creates GitHub Release (requires manual approval)
Verification: Confirm the release branch and tag were created!
-
PyPI Publishing: Go to GitHub Actions →
Releaseworkflow → Approve "Publish to PyPI" -
GitHub Release: After PyPI approval → Approve "Create GitHub Release"
- Verify the release on PyPI
- Verify the release on GitHub Releases
- Test installation:
pip install kubeflow==X.Y.Z
Announce: Post the announcement for the new Kubeflow SDK release in:
- #kubeflow-ml-experience Slack channel
- kubeflow-discuss mailing list