This is a description of a formalized release plan that will take effect with version 1.3.0.
The most significant difference is that releases will now adhere to the conventions of semantic versioning. In particular, we will strictly abide by the following release rules:
Patch versions of the driver (Z in x.y.Z) will be released only when backward-compatible bug fixes are introduced. A bug fix is defined as an internal change that fixes incorrect behavior.
Minor versions (Y in x.Y.z) will be released if new, backward-compatible functionality is introduced to the public API.
Major versions (X in X.y.z) will be incremented if any backward-incompatible changes are introduced to the public API.
This policy will clearly indicate to users when an upgrade may affect their code. As a side effect, version numbers will climb more quickly than before.
Before each relese to Rubygems.org, the following steps will be taken:
All driver tests will be run on Linux, OS X, and Windows via continuous integration system.
Update the HISTORY file and document all significant commits.
Update the version in lib/bson.rb, lib/mongo/version.rb, and ext/cbson/version.h.
Commit: "RELEASE [VERSION]"
git tag [version]
Build gems. Ensure that they have the correct versions.
Push tags and commit to GitHub (git push origin master, git push --tags).
Build and push docs. (git: mongodb/apidocs)
Push gems to Rubygems.org.
Test that the gem is downloadable from Rubygems.org.
Close out release in JIRA.
Annouce release on mongodb-user and mongodb-dev.
- rake deploy:change_version[x.x.x]
- rake deploy:git_prepare
- rake deploy:git_push
- rake deploy:gem_build
- rake deploy:gem_push