Skip to main content

CI/CD

At a high level, the VOL application's CI/CD pipeline can be visualised as follows:

CI/CD

Continuous Integration (CI)

note

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.

tip

To view the current version of the application in each environment, refer to the deployments page.

Workflow: .github/workflows/cd.yaml.

CD workflow

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.

warning

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.

EnvironmentAbbr.PurposeStabilityTest coverage provided by
DevelopmentDEVUsed by the team to test their changes.UnstableContinuous Integration (CI)
IntegrationINTA stable environment assured by the E2E tests.StableEnd-to-End (E2E) tests
Pre-productionPREPUsed to test the application in a production-like environment.StableRelease tests
ProductionPRODThe live environment.StableUser Acceptance Testing (UAT)