# Releasing

`.github/workflows/build.yml` runs the tests on Linux and Windows with Python 3.11 to 3.14
on pushes to `main` (except documentation-only changes), on manual runs and on published
GitHub releases. For a release it also checks that the tag is `v` plus the version, builds
the package, tests the built wheel and, only if all that passed, uploads it to PyPI.

1. Set `__version__` in `pyeasydeploy/__init__.py` and add its entry to `CHANGELOG.md`,
   headed `## X.Y.Z - YYYY-MM-DD`.
2. Commit and push to `main`.
3. Publish a GitHub release tagged `v` plus that version:
   `gh release create vX.Y.Z --title vX.Y.Z --notes-file <notes>`.

A version that reached PyPI cannot be uploaded again: if something is wrong with it,
release the next patch version.

One-time setup: on PyPI, add a Trusted Publisher to the `pyeasydeploy` project with owner
`offerrall`, repository `pyeasydeploy`, workflow `build.yml` and environment
`pypi-release`. No API token is needed.
