RunbookProof releases are built, verified, published to PyPI, and attached to a
GitHub release by .github/workflows/release.yml.
Before publishing the first version:
- Create or sign in to the PyPI account that will own
runbookproof. - Configure a PyPI Trusted Publisher with:
- Owner:
antonisloukis - Repository:
runbookproof - Workflow:
release.yml - Environment:
pypi
- Owner:
- In the GitHub repository, create an environment named
pypi. - Add environment protection rules before publishing production releases.
No PyPI API token is stored in the repository.
- Start from an up-to-date
mainbranch. - Confirm the intended version in
pyproject.toml. - Add the release notes to
CHANGELOG.md. - Run the complete validation suite.
- Build the wheel and source distribution.
- Run the distribution-content checker.
- Install and smoke-test the generated wheel.
- Merge the release-preparation pull request.
- Create and push an annotated version tag.
- Confirm that the Release workflow succeeds.
- Confirm the package appears on PyPI.
- Confirm the GitHub release contains both distribution files.
uv sync --frozen
uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytest
git diff --checkBuild fresh distributions:
rm -rf dist
uv build --no-sources
uv run python scripts/check_distribution.pySmoke-test the built wheel in an isolated environment:
rm -rf .release-venv
uv venv --python 3.11 .release-venv
uv pip install --python .release-venv/bin/python dist/*.whl
.release-venv/bin/runbookproof --version
.release-venv/bin/runbookproof rules --format json
.release-venv/bin/runbookproof scan README.md
rm -rf .release-venvFor version 0.1.0:
git switch main
git pull origin main
git tag -a v0.1.0 -m "RunbookProof v0.1.0"
git push origin v0.1.0The tag must exactly match the project version prefixed with v.
The release workflow will:
- run formatting, linting, type checking, and tests
- verify that the tag matches
pyproject.toml - build the source distribution and wheel
- inspect the distribution contents
- install and smoke-test the wheel
- publish the distributions through PyPI Trusted Publishing
- create a GitHub release and attach the distributions