BigchainDB follows the Python form of Semantic Versioning (i.e. MAJOR.MINOR.PATCH), which is almost identical to regular semantic versioning, but there's no hyphen, e.g.
0.9.0for a typical final release4.5.2a1not4.5.2-a1for the first Alpha release3.4.5rc2not3.4.5-rc2for Release Candidate 2
Note 1: For Git tags (which are used to identify releases on GitHub), we append a v in front. For example, the Git tag for version 2.0.0a1 was v2.0.0a1.
We use 0.9 and 0.9.0 as example version and short-version values below. You should replace those with the correct values for your new version.
We follow BEP-1, which is our variant of C4, the Collective Code Construction Contract, so a release is just a tagged commit on the master branch, i.e. a label for a particular Git commit.
The following steps are what we do to release a new version of BigchainDB Python Driver.
-
Create a pull request where you make the following changes:
- Update
CHANGELOG.md - In
bigchaindb-driver/__init__.py:- update
__version__to e.g.0.9.0(with no.devon the end)
- update
- In
setup.pyupdate the version and maybe update the development status item in theclassifierslist. For example, one allowed value is"Development Status :: 5 - Production/Stable". The allowed values are listed at pypi.python.org. - In
README.rstupdate theCompatibility Matrix
- Update
-
Wait for all the tests to pass!
-
Merge the pull request into the
masterbranch. -
Go to the bigchaindb/bigchaindb-driver Releases page on GitHub and click the "Draft a new release" button.
-
Fill in the details:
- Tag version: version number preceded by
v, e.g.v0.9.1 - Target: the last commit that was just merged. In other words, that commit will get a Git tag with the value given for tag version above.
- Title: Same as tag version above, e.g
v0.9.1 - Description: The body of the changelog entry (Added, Changed, etc.)
- Tag version: version number preceded by
-
Click "Publish release" to publish the release on GitHub.
-
On your local computer, make sure you're on the
masterbranch and that it's up-to-date with themasterbranch in the bigchaindb/bigchaindb-driver repository (e.g.git fetch upstreamandgit merge upstream/master). We're going to use that to push a newbigchaindb-driverpackage to PyPI. -
Make sure you have a
~/.pypircfile containing credentials for PyPI or just enter them manually. -
Do
make releaseto build and publish the newbigchaindb-driverpackage on PyPI. For this step you need to havetwineinstalled -
Log in to readthedocs.org and go to the BigchainDB Python Driver project, then:
- Go to Admin --> Advanced Settings
and make sure that "Default branch:" (i.e. what "latest" points to)
is set to the new release's tag, e.g.
v0.9.1. (Don't miss thevin front.) - Go to Admin --> Versions
and under Choose Active Versions, do these things:
- Make sure that the new version's tag is "Active" and "Public"
- Make sure the stable branch is not active.
- Scroll to the bottom of the page and click the "Submit" button.
- Go to Admin --> Advanced Settings
and make sure that "Default branch:" (i.e. what "latest" points to)
is set to the new release's tag, e.g.
Congratulations, you have released a new version of BigchainDB Python Driver!
Update the BigchainDB Python Driver version in the acceptance/python/Dockerfile in the BigchainDB Server.