Continuous Integration and Deployment

This page documents Black Lung continious intregration and deployment methodology.

Black Lung utilizes an Azure DevOps repository to hold the code for all Azure cloud infrastructure. Through this repository a series of pipelines run to achieve continuous integration and deployment across the Black Lung Azure cloud environment through service connections.

CI/CD

Pipelines

Each repository has the following pipelines. Note, these pipelines can only act upon resources that they’ve deployed. It will not track, change, or destroy resources deployed manually or by other pipelines.

PipelineDescription
Black Lung Dev/ProdRuns when a code push is approved to the master branch.
Drift CheckRuns once a day and scans the Azure environment for any differences between what’s deployed and what’s in the repository. If any are found it will change the environment to match the repository and notify relevant parties.
Tear DownMust be initiated manually by privileged user(s). Will run a basic terraform destroy command against the azure environment.

Terraform

Inside each repository all terraform files are held under a single directory. These terraform files can be generalized as context files and deployment files. Context files supply information like naming conventions, variables, versions, and project configuration files. Deployment files are responsible for reading context and deploying required resources as listed by the context. Any example of a deployment file would be static_site, which is responsible for deploying all Black Lung static websites. Project configuration files are used to indicated if they’re enabled, what terraform deployment file is used to deploy the project, and any relevant parameters.

Security