Skip to content

CI

Continuous Integration is the build and verify half of CI/CD. It runs on whatever version-control platform you already use — we meet you where you are rather than forcing a migration:

  • GitHub → GitHub Actions
  • GitLab → GitLab CI
  • Azure DevOps → Azure Pipelines

The chosen provider is confirmed during the audit.

Every change to the application runs through the same stages, with each stage a quality gate that must pass before the next:

  1. Lint & test — static checks and the test suite. Fast feedback, fail early.
  2. Build the image — produce a versioned, immutable container image.
  3. Scan — security gates before anything ships:
    • SAST (static application security testing) on the source.
    • Dependency scanning for known-vulnerable libraries.
    • Container image scanning (e.g. Trivy) for OS- and package-level CVEs.
  4. Publish — push the image to the registry: ECR (AWS), ACR (Azure), or GHCR.
  5. Bump the manifest — write the new image tag into the GitOps repository, where CD takes over.
lint & test ─► build image ─► scan (SAST · deps · image) ─► push to registry ─► bump GitOps manifest
  • A failed test or a scan finding above the agreed severity blocks the build — broken or vulnerable images don’t reach the registry.
  • Images are immutable and tagged (e.g. by commit), so what was tested is exactly what ships.
  • The handoff to CD is a single, reviewed commit to Git — nothing is pushed straight to the cluster.

This is the front half of the “Safe CI/CD with automated rollbacks” promise; the CD layer provides the safe delivery and the rollbacks.