Creating a release¶
Preparing a release¶
Prepare the project for a new release
nox -s release:prepare -- --type {major,minor,patch}
The
release:prepare
nox session affects thepyproject.toml
,version.py
, and files in thedoc/changes
directory:Creates & switches to a release branch (can be skipped with
--no-branch
)Updates the version in the
pyproject.toml
andversion.py
Moves the content of unreleased changes file
unreleased.md
to a versioned changes filechanges_<version>.md
Adds a description of dependency changes to the versioned changes file:
Only direct dependencies are described, no transitive dependencies
Changes are detected by comparing the current content of file
poetry.lock
to the latest Git tag.
Updates the
changelog.md
list with the newly created versioned changes fileCommits the changes (can be skipped with
--no-add
)Pushes the changes and creates a PR (can be skipped with
--no-pr
)
Merge your Pull Request to the default branch
Trigger the release
nox -s release:trigger
Use the nox session
release:trigger
to:Switch to & pull the changes from the default branch
Verify that the version to be released does not already have a git tag or GitHub release
Create a new tag & push it to the default branch, which will trigger the GitHub workflow
cd.yml
What to do if the release failed?¶
The release failed during pre-release checks¶
Delete the local tag
git tag -d "<major>.<minor>.<patch>""
Delete the remote tag
git push --delete origin "<major>.<minor>.<patch>"
Fix the issue(s) which led to the failing checks
Start the release process from the beginning
One of the release steps failed (Partial Release)¶
Check the GitHub action/workflow to see which steps failed
Finish or redo the failed release steps manually
Note
Example
Scenario: Publishing of the release on GitHub was successfully but during the PyPi release, the upload step was interrupted.
Solution: Manually push the package to PyPi