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.
The pipeline
Section titled “The pipeline”Every change to the application runs through the same stages, with each stage a quality gate that must pass before the next:
- Lint & test — static checks and the test suite. Fast feedback, fail early.
- Build the image — produce a versioned, immutable container image.
- 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.
- Publish — push the image to the registry: ECR (AWS), ACR (Azure), or GHCR.
- 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 manifestQuality gates
Section titled “Quality gates”- 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.