Releases
Release Trigger
JARVIS uses a dedicated GitHub Actions workflow at .github/workflows/release.yml.
Releases are triggered by:
- pushing a tag that matches
v* - manually running the workflow with a required
taginput that points to an existing tag
How To Cut A Release
- Make sure
maincontains the state you want to release. - Create an annotated version tag.
- Push the tag to GitHub.
Example:
bash
git checkout main
git pull --ff-only
git tag -a v0.1.0 -m "Release v0.1.0"
git push origin v0.1.0If the tag already exists and you want to publish from it manually, run the Release workflow from GitHub Actions and pass the same tag, for example v0.1.0.
What The Workflow Does
The release workflow stays focused on packaging and publishing:
- Checks out the tagged ref.
- Sets up Python 3.12.
- Installs the project with development dependencies plus
build. - Runs
pytest -q. - Builds Python distribution artifacts with
python -m build. - Creates source archives for Unix-like and Windows users.
- Generates
checksums.txtwith SHA256 hashes for every published file. - Publishes all artifacts to a GitHub Release with autogenerated release notes.
Published Artifacts
Each release publishes:
jarvis-<version>.tar.gzas the Python source distributionjarvis-<version>-py3-none-any.whlas the universal wheeljarvis-v<version>-source.tar.gzas the Unix-like source archivejarvis-v<version>-source.zipas the Windows-friendly source archivechecksums.txtwith SHA256 hashes for all release files
The workflow uses the Git tag as the release version. For example, tag v0.1.0 produces a release named v0.1.0, and the Python package build is versioned as 0.1.0 during the workflow.
Verify Checksums
After downloading release files, verify them with:
bash
sha256sum -c checksums.txtTo verify a single file manually:
bash
sha256sum jarvis-v0.1.0-source.tar.gz