Altair has two release paths:
- Automated stable releases for routine releases where Cocogitto's SemVer calculation is appropriate.
- Manual releases when maintainers need to choose the release tag themselves.
Check that all Vega project versions are up-to-date. See NOTES_FOR_MAINTAINERS.md.
The release environment in the repository settings must have at least one required reviewer. The workflow verifies this before creating a version tag.
- A couple of times a month, GitHub Actions will check if notable commits have been made to main (e.g. fixes and features) since the last release. If so, a release candidate will be prepared and an issue will be opened tagging the maintainers to review it before releasing.
- If a scheduled candidate proposes an undesired version bump, reject its pending deployment, close its review issue, and rerun the workflow manually. Manual workflow dispatch let's you choose whether to use a
major,minor, orpatchbump.- To trigger this release workflow manually: go to the "Actions" tab, click the
Prepare Release Draftworkflow to the left, and then "Run workflow".
- To trigger this release workflow manually: go to the "Actions" tab, click the
- This workflow automates the following steps:
- Checks for an existing release review issue or draft release and exits if one already exists.
- Uses Cocogitto to inspect conventional commits since the latest
v*tag. - Skips the release if no SemVer-relevant changes are found.
- Runs the test suite.
- Generates a release notes preview without creating a version tag.
- Builds and publishes a docs preview from the candidate commit with a release-candidate banner at
release-preview/latest/. - Opens an issue with the candidate commit, release notes, docs preview, and review instructions.
- Waits for approval through the protected
releaseenvironment.
- If a scheduled candidate proposes an undesired version bump, reject its pending deployment, close its review issue, and rerun the workflow manually. Manual workflow dispatch let's you choose whether to use a
- Review the issue opened by the workflow. Approve the pending release deployment if the release notes and docs preview look correct, or reject it to abort the release. Rejection creates no version tag or GitHub release.
- Approval creates an immutable
vX.Y.Ztag at the exact reviewed commit and creates a draft GitHub release. Review the draft, publish it on GitHub, and close the release review issue.- Publishing a non-prerelease GitHub release whose tag matches
vX.Y.Ztriggers thePublish Release to PyPIworkflow. That workflow checks out the release tag, builds the package, publishes to PyPI using trusted publishing, and updates the official documentation.
- Publishing a non-prerelease GitHub release whose tag matches
Use this path for major releases, maintenance-branch releases, releases that should not follow Cocogitto's automatic SemVer calculation, or if the automated workflow fails. Unlike the automated workflow, the maintainer chooses and creates the release tag manually.
-
Make sure to have set up your environment. Update your environment with the latest dependencies:
uv sync --all-extras -
Make certain your branch is in sync with head, and that you have no uncommitted modifications. If you work on a fork, replace
originwithupstream:git checkout main git pull origin main git status # Should show "nothing to commit, working tree clean" -
Do a clean doc build:
uv run task doc-build -- --cleanNavigate to http://localhost:8000 and ensure it looks OK, particularly the gallery thumbnails.
-
Run the test suite:
uv run task test -
Tag the release. If you work on a fork, replace
originwithupstream:git tag -a v6.0.0 -m "Version 6.0.0 release" git push origin tag v6.0.0 -
Create a draft release at https://github.com/vega/altair/releases/new for the tag. Review the release notes, then publish the release. Publishing the GitHub release triggers PyPI publishing automatically for
vX.Y.Ztags. -
Publish the updated documentation. To do this manually, write access to altair-viz/altair-viz.github.io is required:
uv run task doc-build -- --clean uv run task doc-publish
Double-check that a conda-forge pull request is generated from the updated PyPI package by the conda-forge bot. This is usually quick, but may take up to several hours: https://github.com/conda-forge/altair-feedstock/pulls