Skip to content
DRvanR edited this page May 16, 2017 · 4 revisions

Release Management

Versioning

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.

Branching model

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, like release-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.

Automated release management

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:

  1. check whether your working copy is clean;
  2. summarise changes you are going to publish;
  3. check the stability of Composer dependencies you have installed;
  4. run the test suite;
  5. ask what release to perform (major, minor, or patch);
  6. update the changelog;
  7. and commit, tag and publish your changes and tag to GitHub.

Building releases

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.