Releasing
This page is for maintainers of the kit itself. The process mirrors prism-local and
uses PyPI trusted publishing (OIDC), so no API tokens are stored anywhere. The workflow is .github/workflows/publish.yml
(manual: Actions -> Publish -> Run workflow); it runs the gate before it builds.
One-time setup
- On test.pypi.org (and later pypi.org),
add a pending publisher: project
local-sdlc-kit, ownersenssei, repositorylocal-sdlc-kit, workflowpublish.yml, environmenttestpypi(respectivelypypi). - In the GitHub repository, create the environments
testpypiandpypi(Settings -> Environments). Add yourself as a required reviewer onpypiso a release needs an explicit approval. - For this documentation site: Settings -> Pages -> Source: GitHub Actions.
.github/workflows/docs.ymlthen deploys it frommain.
Each release
- Update
CHANGELOG.md(move[Unreleased]items under a dated[X.Y.Z] - YYYY-MM-DDheading) andsdlc_kit/__init__.py(__version__), and merge tomainwith the gate green (python3 sdlc_kit/sdlc_check.pyexits 0). - Run Publish -> target
testpypi. It runs the gate, builds the sdist and wheel, runstwine check --strict, uploads to TestPyPI, then installs the uploaded version into a clean virtualenv and smoke-testslocal-sdlc-kit-install --help. - Tag the release (
git tag -s vX.Y.Z && git push origin vX.Y.Z) and run Publish on that tag with targetpypi. The workflow refuses to publish to PyPI unless it runs from the tagv<__version__>. - Create a GitHub release for the tag.
Versions are permanent
Neither index lets you re-upload a version, and PyPI never lets you reuse one. Use a pre-release version such as 0.1.0rc1
while rehearsing on TestPyPI if you expect to iterate.