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.0
for a typical final release4.5.2a1
not4.5.2-a1
for the first Alpha release3.4.5rc2
not3.4.5-rc2
for 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.dev
on the end)
- update
- In
setup.py
update the version and maybe update the development status item in theclassifiers
list. For example, one allowed value is"Development Status :: 5 - Production/Stable"
. The allowed values are listed at pypi.python.org. - In
README.rst
update theCompatibility Matrix
- Update
-
Wait for all the tests to pass!
-
Merge the pull request into the
master
branch. -
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
master
branch and that it's up-to-date with themaster
branch in the bigchaindb/bigchaindb-driver repository (e.g.git pull upstream
). We're going to use that to push a newbigchaindb-driver
package to PyPI. -
Make sure you have a
~/.pypirc
file containing credentials for PyPI or just enter them manually. -
Do
make release
to build and publish the newbigchaindb-driver
package on PyPI. For this step you need to havetwine
installed. If you get an error likeMakefile:116: recipe for target 'clean-pyc' failed
then try doingsudo chown -R $(whoami):$(whoami) .
-
Log in to readthedocs.org and go to the BigchainDB Python Driver project, then:
- Click on "Builds", select "latest" from the drop-down menu, then click the "Build Version:" button.
- Wait for the build of "latest" to finish. This can take a few minutes.
- 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
. (It won't be an option if you didn't wait for the build of "latest" to finish.) Then scroll to the bottom and click "Save". - 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 "Save".
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.