Table represents how branching should be implemented to have predictable/reproducible setup.

This will avoid accidental deployments of unstable versions into business critical environments but also give flexibility to test different versions and run feature in isolation.

Table contains complete list of environments. Not all environments must be implemented. Depending on the stage of the product or team size it can be shrunk down to only prod and dev or prod and stage environments.

Env

Purpose

Filters

Owners

Local

For local development

Any branch or tag

Developers

CI or Ephemeral

To test feature branches

Any branch with either:

  • feature/branch-name pattern

  • DMVP-1234-something-about-ticket

Developers

Dev or development

For developer testing

  • dev

  • main/master

  • release candidate tags

  • release tags

Developers

Stage or staging

For QA testing and review

Any stable or candidate branch can also be deployed here for testing purposes. In some cases necessary to deploy older versions to test certain behaviour and reproduce issues.

  • main/master branch

  • release candidate tags

  • release tags.

E.g. main, 1.2.3-rc-1, 1.2.3-1.

QA

Pre-prod or pre-production

For final business testing and review, only release candidate and stable tags can be deployed.

  • release candidate tags

  • release tags

E.g. 1.2.3-rc-1, 3.2.1-rc-5.

  • Product Management

  • QA

Prod or production

Production workloads, only stable tags can be deployed.

  • release tags

E.g. 1.2.3-1243, 3.2.1.

  • Product Management

  • QA