Release Process

Croud Tech software components must transition through Integration, Staging/Preview, Pre-Live, Environments prior to being deployed in Production.

https://croudcontrol.atlassian.net/wiki/spaces/DEVOPS/pages/25329665/Feature+Delivery

Configuration Management

Configuration of all CroudTech resources is fully managed via Git code repositories - this is broken into two categories:

Infrastructure

Configuration of all AWS hosting infrastructure and services is managed using https://www.terraform.io/. This provides a fully audited change history and reliable change management capability over the infrastructure via a set of version controlled TOML files.

Environments (those denoted by * are not yet managed via Terraform)

  • Production CroudControl Infrastructure

  • PreLive CroudControl Infrastructure

  • Production Tools Infrastructure *

  • Staging Environment Infrastructure *

  • Preview Environment Infrastructure *

  • Integration Environment Infrastructure *

The infrastructure management system is responsible for provisioning all AWS resources necessary to supply one or more Rancher servers that will host any CroudTech applications.

Application

Run-time configuration of all CroudTech applications is managed using Rancher (1.6). This provides a fully audited change history and reliable change management capability over all CroudTech applications via a set of version controlled YAML files.

Integration/Staging/Preview Environments

Application configuration for these environments in stored in the repository below:

https://github.com/CroudTech/devops-rancher-stacks-dev (Local/Integration/Staging/Preview Environments)

Each commit in that repository represents a snapshot of the entire environment as a collection of Rancher stack files, Git diff is used to manage promotion of releases between environments.

Pre-Live/Production Environments

Application configuration for Pre-Live and Production configuration files are subject to access controls - contact devops@croud.co.uk

The versioning strategy follows SemVer

https://semver.org/.

Application Versions

Application versions are created using a continuous delivery pipeline service based on Drone. Every commit to a Git repository will trigger a build. A build consists of a series of pipeline steps executed in order, these typically follow the sequence below.

  1. VCS clone

  2. Run Tests

  3. Determine which of subsequent steps should execute

  4. Build Tagged Docker images

  5. Auto Deploy Docker image to Integration environment

  6. Notify DevOps team of results

Application versions (Tagged Docker images) can be built in one of two ways

  • Tag Triggers - The relevant Git repository is tagged in the appropriate format

  • Commit Message Triggers - A commit is made to the relevant Git repository where the commit message contains a string in the appropriate format

Environment Overview Commit Message Trigger Tag Trigger
Integration Builds are delivered directly to integration environments via commit messages containing [integration]. This allows the integration environment to serve as a bleeding edge deployment to aid development and provide quick demos (internal only). [integration] N/A
Staging Staging releases are formal, pre-RC software which is undergoing feature testing or other QA activity. These types of releases are not permitted beyond Staging. [staging] 1.0.2-beta-2
Preview/Pre-live These are generally RC releases and are versioned accordingly. N/A 2.0.3-rc1
Live This is a shipped version of software. N/A 3.0.2

Deployment

Once an application version (Tagged Docker image) is created, it can be deployed to any environment via a simple command line process. Details are provided in the mark down of the relevant Git repository.