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:
| Developers |
Dev or development | For developer testing |
| 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. |
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. |
E.g. 1.2.3-rc-1, 3.2.1-rc-5. |
|
Prod or production | Production workloads, only stable tags can be deployed. |
E.g. 1.2.3-1243, 3.2.1. |
|