Overview
The environments pipeline is a continuous delivery pipeline for Banno/Digital infrastructure. It aims to deploy various types of configuration changes, including:
- Kubernetes configurations (app cpu, memory, environment variables)
- Marathon (app cpu, memory, environment variables)
- Terraform (certain types)
- Postgres Privileges* (new app setup)
- Vault (new app setup)
- Chef (supported in environments-chef)
* supported in staging, uat environments; working towards production environment support
The environments pipeline configuration is found in the environment repo’s Jenkinsfile
Stages
The first three stages of the environments pipeline are make, validate, and gathering changes. These stages run in every build to confirm and determine the commits made to the environments repository, usually from merged pr’s. After completing, the pipeline begins deploying the configuration changes to staging, uat, and production.
Behavior
Each build is triggered by a commit from a merged pull request. If the pipeline is running upon the merge of the pull request, then it goes into a queue to be run after the initial running build has finished, or when a running build is waiting on approvals for a production deployment(indicated by the job name with prod-build appended). Then the pipeline will grab all queued deploy changes in the queue and begin deploying them in the most recently queued job. Note: This behavior sets jobs to a NOT_BUILT status when they have been superceded to a more recently run job. The ultimate aim for this is to speed up the deployment process.
Blockage
When large deployment changes are merged into the pipeline it can create blockage for all deploys. To help with this, chef deployments have been moved to their own pipeline (envrionments-chef).