-
Notifications
You must be signed in to change notification settings - Fork 10
Release Management
All Stepup applications and libraries follow Semantic Versioning 2.0.0. The complete specification can be read there.
In short, given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
All Stepup applications and follow Vincent Driessen's branching model. The original blog post can be read here.
In short:
- all work is performed in branches, like
feature/add-button
,bugfix/syntax-fix
,maintenance/update-dependencies
; - which is merged to the development branch,
develop
; - releases are prepared on release branches by merging
develop
into a release branch, likerelease-1.x
; - and releases are tagged on
master
, by merging in the latest release branch and tagging.
Note that all merging is performed without fast-forwards by specifying --no-ff
.
Before a version may be released:
- the test suite must pass;
- and the changelog must be updated.
To automate this, all Stepup applications and libraries use the release management tool developed by liip, RMT. To start the release process, make sure you have checked out master and execute ./RMT release
. RMT will typically:
- check whether your working copy is clean;
- summarise changes you are going to publish;
- check the stability of Composer dependencies you have installed;
- run the test suite;
- ask what release to perform (major, minor, or patch);
- update the changelog;
- and commit, tag and publish your changes and tag to GitHub.
One a new version of an application (Middleware, Gateway, SelfService, RA) is released tarballs of the application are build using the stepup-build.sh
script. The script and a Vagrant file for creating a build machine are located in Stepup-Build. The build tarballs are uploaded to github using the github-upload-release.sh
script. The prebuild tarballs are deployed using the scripts\stepup-deploy.sh
script in Stepup-Deploy.