Release - how to¶
How to release
This is a checklist for releasing a new version of something if we’re using the Git Flow <http://nvie.com/posts/a-successful-git-branching-model/> process for development.
Git branches¶
Since we use Git Flow, the two branches of concern at release time are:
master - always has the most recently released code. Each release is tagged X.X.X.
develop - contains the code under development for the next release
So technically, what makes a new release is merging develop to master and tagging it. Of course, we don’t want to do that until we’re ready.
We also use the git flow <https://github.com/nvie/gitflow> tool to help with the Git Flow branching model, especially for releases.
Release steps¶
Take these steps to release the new version:
Make a fresh clone of the repo (to make sure we’re working off the same code that’s on github):
git clone git@github.com:org/project.git cd project
Set up git flow in this new repo:
git checkout master git flow init -d
Start release branch using git flow:
git flow release start <VERSION>
e.g.
git flow release start ‘0.0.5’
Do not include v
on the front of the version number - there’s nothing
wrong with it, we’re just not using it for our version numbers here and want
to be consistent.
Run the tests locally. The tests must pass before proceeding. Fix any problems and commit the changes.
Set VERSION in project/__init__.py to the same version, e.g. VERSION = ‘0.0.5’.
Start a new section in RELEASE_NOTES.rst for the new release. Always put the new release section above the previous ones.
Review git log and add major new features and incompatibilities to the release notes.
Commit changes. Be sure to include the new version number in the commit message first line, e.g. “Bump version for 0.0.5”.
Push the release branch.
Open a pull request from the release branch to the master branch.
When pull request has been reviewed, use git flow commands to make the release:
git flow release finish ‘0.0.5’
You’ll be prompted for a commit message for the merge to master. The default is fine (Merge branch ‘release/0.0.5’).
You’ll be prompted for a tag message. Make it “Tag for v0.0.5” or whatever the version is.
You’ll be prompted for a commit message for the merge back to develop. The default is fine.
Push the merged master and develop branch and tag to github:
git push origin master –tags git push origin develop –tags
Verify that CI tests have passed for the pushed master
Email the release announcement