/
Versioning, Branching, and Releasing Strategy

Versioning, Branching, and Releasing Strategy

  • For versioning, we use Semantic Versioning (major.minor.patch)

    • We increment the patch version for bugs/fixes

    • We increment the minor version for new functionality

    • We increment the major version for breaking changes (or to communicate to the user “big changes”)

  • For branching, we follow Trunk-Based Development, with some additions:

    • the development branch contains the upcoming/next release, while we branch for releases as close to the end of development as possible (usually around/after code freeze)

    • the release/x.y.z branch contains the code for that specific release

    • the deploy/xyz branches deploy to specific environments (QA, ACC, and production).

  • This allows us to patch/hotfix previous releases quickly, while working on riskier changes in isolation for the upcoming/next release.

 

Workflow for Different Branches

If we’re almost done releasing the v1.0.0 version of ROF, and we have some future changes underway for v1.1.0, here’s how that looks:

  • development contains changes for the next/future release (v1.1.0), while release/v1.0.0 contains changes for v1.0.0

  • To test things for the current v1.0.0 release, we branch from release/1.0.0, merge into release/1.0.0, then deploy to acceptance (as the “release branch” environment)

  • To test things for the upcoming v1.1.0 release, we branch from development, merge into development, then deploy to qa (as the “development branch” environment)

The definition of done (QA testing on a non-development environment) is satisfied by either testing on acceptance (v1.0.0 changes) or qa (v1.1.0 changes).

 

Related content

Coding Style
Coding Style
Read with this
DevOps Branching Strategy and Deployments
DevOps Branching Strategy and Deployments
More like this
How to switch role / add user in ROFS
How to switch role / add user in ROFS
Read with this
Git branching strategy
Git branching strategy
More like this
ROF: Sprint Planning
ROF: Sprint Planning
More like this
Release Process
Release Process
More like this