CI/CD
At a high level, the VOL application's CI/CD pipeline can be visualised as follows:
Continuous Integration (CI)
Only parts of the application that have changed are updated during continuous integration.
The CI workflow is triggered by a pull_request
to the default branch (main
). The workflow is responsible for building, testing the application & infrastructure, and running Terraform plans on the infrastructure.
Workflow: .github/workflows/ci.yaml.
Various tools run on CI to ensure the quality of the codebase:
PHP
Testing
Linting
Security
Docker
Linting
Testing
- Docker build (
docker build
)
Security
Terraform
Linting
- TFLint
- Terraform format (
terraform fmt
)
Testing
- Terraform validate (
terraform validate
) - Terraform plan (
terraform plan
)
Security
Continuous Deployment (CD)
The CD workflow is triggered by a successful merge to the default branch (main
). The workflow is responsible for building and deploying the application through to the production environment.
To view the current version of the application in each environment, refer to the deployments page.
Workflow: .github/workflows/cd.yaml.
Path to production
Environments
The VOL application has four environments: Development, Integration, Pre-production, and Production. Each environment has a specific purpose and stability level.
The stability is only as good as the test coverage that assures it. For example, integration tests are only as good as the E2E tests that assure that it's working.
Environment | Abbr. | Purpose | Stability | Test coverage provided by |
---|---|---|---|---|
Development | DEV | Used by the team to test their changes. | Unstable | Continuous Integration (CI) |
Integration | INT | A stable environment assured by the E2E tests. | Stable | End-to-End (E2E) tests |
Pre-production | PREP | Used to test the application in a production-like environment. | Stable | Release tests |
Production | PROD | The live environment. | Stable | User Acceptance Testing (UAT) |