Publishing
FLITS currently has three automated publication paths:
publish-package.ymlfor TestPyPI and PyPIpublish-image.ymlfor the GHCR container imagedocs.ymlfor GitHub Pages documentation deployment
One-time package setup
For Python package publishing, create matching GitHub environments in the repository settings:
testpypipypi
Then configure pending publishers on both indexes with these values:
TestPyPI pending publisher
- Project name:
flits - Owner:
DirkKuiper - Repository name:
flits - Workflow name:
publish-package.yml - Environment name:
testpypi
PyPI pending publisher
- Project name:
flits - Owner:
DirkKuiper - Repository name:
flits - Workflow name:
publish-package.yml - Environment name:
pypi
Release checklist
- Update
flits.__version__inflits/__init__.py. - Run the verification steps from Testing.
- Commit the release changes and push them to GitHub.
Publish to TestPyPI
Use the GitHub Actions workflow manually:
- Open
Publish Python Package. - Run the workflow with
repository=testpypi. - Wait for the
publish-testpypijob to finish.
Verify the uploaded package in a clean environment:
python -m venv /tmp/flits-testpypi
source /tmp/flits-testpypi/bin/activate
python -m pip install --upgrade pip
python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple flits
flits --help
Publish to PyPI
The simplest path is:
- Create a Git tag such as
v0.1.1. - Publish the matching GitHub release.
- Let the
releaseevent triggerpublish-package.yml. - Approve the
pypienvironment when GitHub requests it.
You can also dispatch the same workflow manually with repository=pypi.
Deploy docs for free
The documentation site is built with MkDocs Material and deployed through GitHub Pages. That setup is free for public repositories.
The docs.yml workflow builds the site on pull requests and deploys it from
main.
Optional fitburst support
The PyPI package intentionally omits fitburst from its published dependency
metadata. Users who want the fitburst-backed scattering workflow can install it
after FLITS: