main is the edge channel. A successful build
from main updates latest and publishes an immutable
sha-<full-git-sha> tag. A v* Git tag publishes the version tag and the
immutable SHA tag. It does not move latest.
Prepare a release
- Start from a clean checkout of the commit to release.
- Run all backend, proof-app, frontend, package, secret, and workflow checks in Development.
- Review migrations and workflow replay compatibility. A container rollback does not downgrade Postgres or DBOS state.
- Update the version in
pyproject.toml. Add the release section to the changelog. - Merge the release change and record the resulting full commit SHA.
Publish to PyPI
The GitHub release startsrelease.yml. This workflow builds the release tag
and uploads it through a PyPI Trusted Publisher. Druks does not store a token.
The pypi environment and the registered PyPI publisher authorize the upload.
If the release already exists, start the workflow manually. Give the workflow
the release tag:
Install an immutable version
Get the installer from the same release. Pass that ref to each file that it downloads. IfDRUKS_TAG is absent, a v* ref selects the related image tag.
A full commit SHA selects sha-<full-git-sha>.