- (Optional: Iff changes to core icechunk rust crate) Update
icechunk/Cargo.tomlby incrementing the version. - Update
icechunk-python/Cargo.tomlby incrementing the version. - Update the version of the dependency on the core Rust Icechunk library in
icechunk-python/Cargo.toml, ensuring that it is consistent with the latest version of the core icechunk rust crate. - Update the
Cargo.lockfile, by runningcargo checkfrom the top-level icechunk directory. - Document changes in
Changelog.md. - Commit all changes and make a PR.
- Once CI passes on the PR merge it.
- (Optional: Iff changes to core icechunk rust crate) Go to the
publish rust librarygithub action. ClickRun workflow, select the branch (mainfor a normal release,support/v1.xfor a V1 support release), and click the greenRun workflowbutton to launch.
- Wait until any previous workflow completes.
- Go to the
Python CI and library releasegithub action. - Check
Make a PyPI release. - Uncheck
Use git-based version for nightly builds. - Under
Branch to build/release (for manual builds only)select the branch you want to release (mainfor a normal release,support/v1.xfor a V1 support release). Where it asks which branch workflow you want to use the workflow from just use the one frommain. - Click the green
Run workflowbutton to launch. - After the previous point completes, create a new release in GitHub. Ask it to create the tag, and generate the release notes. Once you hit release, this step will upload the new version to PyPI, and notify the community slack of the new release.
- After an hour or so an automated PR should appear to update the conda-forge feedstock. Merge that and the new version will appear on conda-forge.
The Python CI and library release workflow has three inputs that control what gets built and where it goes:
| Input | Purpose |
|---|---|
pypi_release |
If checked, uploads wheels to PyPI |
use_git_version |
If checked, generates version from git tags (e.g., 2.0.0-alpha.0-dev123+gabc1234). If unchecked, uses version from Cargo.toml |
branch |
Which branch to build (main or support/v1.x) |
| Trigger | Destination |
|---|---|
| Scheduled (cron) | Scientific Python nightly only |
Manual with pypi_release: false |
Scientific Python nightly only |
Manual with pypi_release: true |
PyPI and Scientific Python nightly |
Note: Any manual workflow_dispatch trigger will upload to the Scientific Python nightly server, regardless of other settings.
Standard release to PyPI (e.g., 2.0.0):
pypi_release: ✅ checkeduse_git_version: ❌ unchecked (usesCargo.tomlversion)
Alpha/pre-release to PyPI (e.g., 2.0.0-alpha.0):
- Same as standard release - just ensure
Cargo.tomlhas the alpha version pypi_release: ✅ checkeduse_git_version: ❌ unchecked
Dev build to PyPI (e.g., 2.0.0-alpha.0-dev123+gabc1234):
pypi_release: ✅ checkeduse_git_version: ✅ checked