Release Process¶
adif-mcp uses a tag-driven release workflow. Push a semver tag and GitHub Actions handles the rest.
1. Pre-Flight Validation¶
Before releasing, the codebase must pass the full quality gate:
# Clean and run all checks
make clean-all
make gate
Stop if any linting, type, test, manifest, or docstring coverage errors occur.
2. Bump the Version¶
Update the version in pyproject.toml:
version = "0.5.2"
Commit the version bump:
git add pyproject.toml
git commit -m "bump: version 0.5.2"
3. Tag and Push¶
Create a semver tag and push:
git tag v0.5.2
git push origin main --tags
4. Automated Publishing¶
The .github/workflows/publish.yml workflow triggers on any v* tag push:
- Checks out the tagged commit
- Builds the package with
uv build - Publishes to PyPI via trusted publisher (OIDC -- no API tokens)
The pypi environment in GitHub repo settings provides the OIDC trust relationship.
5. Post-Release Verification¶
After the workflow completes, verify the release:
# Install from PyPI
pip install adif-mcp --upgrade
# Verify version
adif-mcp --version
Check the PyPI project page to confirm the new version is live.