Skip to content
Michiel Kodde edited this page Apr 19, 2018 · 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 a branching model.

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.5;
  • and releases are tagged on master or on a release branch (when multiple versions are maintained), by merging in the latest release branch and tagging.

Note that all merging is performed without fast-forwards by specifying --no-ff.

Release management

Before a version may be released:

  • the test suite must pass;

  • and the changelog must be updated.

  • the changelog is written using Markdown and should be formatted like so:

    # Upcoming release
    Release description, consider categorizing the changes when many changes are applied.     
    
    # 1.2.1
    Release description
    
    # 1.2.0
    Release description

    The changelog for the main applications is tracked in the Stepup-Deploy changelog. Changes in bundles are tracked in their own changelog.md file. Please keep the Stepup-Deploy changelog up to date during development add all noteworthy change notes or upgrade instructions to this file in an 'upcomming release' entry.

  • the new release should be tagged either on master or on the release branch when releasing for a specific (non latest) release.

  • the tag can be released in Github

Please update the changelog in the branch where the feature/bugfix is developed. When writing the changelog and the next version number is not clear yet, please write the changelog entry and use Upcoming release as the version number.

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.