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
-
If minor/major version increase, create maintenance/support branch from the current master. The name is
support/v<previous major.minor.x>
(e.g.support/v2.0.x
). -
Create a temporary branch for preparing the next release called
release-preparation
and switch to that branch. -
Update version in the
textX/__init__.py
. -
Update CHANGELOG (create new section for the release, update github links, give credits to contributors).
-
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. -
Create whl/tar.gz packages
python setup.py bdist_wheel sdist
-
Release to PyPI testing
python setup.py publishtest
-
Release to PyPI
python setup.py publish
-
In case of errors repeat steps 3-10.
-
Create git tag in the form of
v<version>
(e.g.v2.1.0
). Push the tag. -
Merge PR and delete PR branch (
release-preparation
). -
Change the version in
textX/__init__.py
to next minor version with.dev0
addition (e.g.v2.2.0.dev0
). -
Merge
master
tonext-version
to keep it up-to-date.
For supporting previous versions only bugfix releases will be made. The process
is similar. The difference for support release would be that release process
would be based of the support
branch instead of the master
branch as is done
for regular releases. Thus, for support release, we would skip step 1, in step 5
we would create PR against the support branch, and we won't do steps 13-15.