Continuos Integration (CI)

Continuous integration (CI) helps developers merge their code changes back to a shared branch, or “trunk,” more frequently—sometimes even daily. Once a developer’s changes to an application are merged, those changes are validated by automatically building the application and running different levels of automated testing, typically unit and integration tests, to ensure the changes haven’t broken the app. - Red Hat

For automated pipelines, this project uses GitHub actions. When ever code is submitted via pull request, the following actions run against it.

ci.yml (Required)

ci.yml

This actions is responsible for linting the source code, running the unit and e2e tests, and building the application. This utilises Nx Cloud with Distributed Task Execution & Distributed Cache to speed up builds. See also Nx.

For commits on the main branch, it also deploys the application.

codeql.yml (Required)

codeql.yml

This uses GitHub’s CodeQL to scan the source code for vulnerabilities.

commitlint.yml (Required)

commitlint.yml

Ensure’s all commits to the branch match the conventional commit format.

renovate.yml (Required)

renovate.yml

Lint’s the project’s renovate config. See also Dependencies.

terraform.yml (Required)

terraform.yml

Lints the terraform configuration and ensures the terraform README is up to date.

Continuos Delivery (CD)

Following the automation of builds and unit and integration testing in CI, continuous delivery automates the release of that validated code to a repository. - Red Hat

For all code on main, the CI pipelines are re-run. Additionally the project’s infrastructure is rolled out by terraform and the built application is deployed by ci.yml.

The latest version of this documentation is also deployed to GitHub Pages.