textX release process
For the background see here.
- We are using semantic versioning and a standard format to keep changelogs (see CHANGELOG.md).
- We develop features on feature branches. Feature branches are named
feature/<feature name>
. - We fix bugs on bugfix branches named as
bugfix/<issue no>-<name>
- We have a branch for the upcoming major release --
next-release
(red in the picture bellow). - If the feature is backward incompatible (BIC) the PR is made against the
next-release
branch (not against themaster
branch) - If the feature is backward compatible PR is made against the
master
. - Thus,
Unreleased
section in the changelog on themaster
branch will never have any BIC change. All BIC changes should go to the changelog on thenext-release
branch. - We constantly merge
master
branch tonext-release
branch. Thus,next-release
branch is the latest and greatest version with all finished features applied. - When the time for minor release come we follow textX release checklist defined bellow.
- When the time for major release come we merge
next-release
branch tomaster
and follow textX release checklist defined bellow.
textX release checklist
-
Create a branch for the next release called
release/<version>
and switch to that branch. -
Update version in the
pyproject.toml
. -
Update CHANGELOG (create new section for the release, update github links, give credits to contributors). Do not forget link to changes at the bottom.
-
Push release branch and create PR. Wait for tests to pass. Wait for the review process to complete.
-
Delete all previous distributions in the
dist
folder.rm dist/*
-
Create
whl/tar.gz
packages.flit build
-
Release to PyPI testing.
flit publish --repository testpypi
- Check release at https://test.pypi.org/project/textX/#history
-
Release to PyPI.
flit publish
- Check release at https://pypi.org/project/textX/#history
-
In case of errors repeat steps 3-10.
-
Create git tag (e.g.
4.1.0
). Push the tag.git tag -s 4.1.0 -m 'Release 4.1.0' git push --tags origin 4.1.0
-
Merge release branch in to
master
. -
Change the version in
pyproject.toml
to next minor version with.dev0
addition (e.g.4.2.0.dev0
). -
Merge
master
tonext-release
to keep it up-to-date.