Releasing¶
Versions follow Semantic Versioning. The version lives
in pyproject.toml and is exposed in the OpenAPI document and by
telegram-me version.
Steps¶
- Move the Unreleased entries in
CHANGELOG.mdunder a new heading## [X.Y.Z] - YYYY-MM-DD. - Bump
versioninpyproject.tomland runuv lock. - Commit (
Release X.Y.Z) on a branch and open a pull request:mainis protected and takes changes only through pull requests with passing checks. Merging it already deploys the commit to production assha-…. -
When the release run of that merge on
mainhas passed, tag the merge commit and push the tag:
The tag builds and pushes X.Y.Z, X.Y and X image tags to GHCR and
Docker Hub and creates a GitHub release with the changelog section as notes.
A pull request that changes the REST or GraphQL contract incompatibly fails
the Guards workflow (Breaking changes). Such
a change needs a major version: label the pull request breaking-change and
describe the change under Changed in CHANGELOG.md.
Hotfix rollback¶
If a release misbehaves, run Actions → Deploy with the previous sha-…
tag; see Production → Rolling back.