CI/CD (Continuous Integration / Continuous Delivery)

Definition

CI/CD is a software delivery practice that automates the build, test, and deployment pipeline. Continuous Integration (CI) merges code changes frequently and runs automated tests. Continuous Delivery/Deployment (CD) automatically deploys tested code to staging or production environments.

Key Concepts

  • CI (Continuous Integration): Developers merge code to a shared repo multiple times daily; each merge triggers automated builds and tests
  • CD (Continuous Delivery): Code that passes CI is automatically prepared for release to production
  • CD (Continuous Deployment): Code that passes CI is automatically deployed to production without human approval
  • Pipeline: Series of stages (build → test → stage → deploy)
  • Artifact: Compiled binary, container image, or package produced by the pipeline
  • Artifact Repository: Storage for build outputs (Nexus, Artifactory, GHCR)

Common CI/CD Tools

Tool Type Notes
GitHub Actions Cloud/On-prem YAML workflows, integrated with GitHub
GitLab CI/CD Cloud/On-prem Built into GitLab, YAML (.gitlab-ci.yml)
Jenkins On-prem Plugin ecosystem, Groovy pipelines
CircleCI Cloud Fast, YAML config, Docker-native
Argo CD GitOps Declarative Kubernetes deployment
Tekton Kubernetes-native Cloud-native CI/CD on K8s

CI/CD Best Practices

  • Fast feedback: Keep pipeline under 10 minutes
  • Immutable artifacts: Build once, promote through environments
  • Environment parity: Staging matches production
  • Rollback capability: Always have a revert path
  • Security scanning: SAST, DAST, dependency checks in pipeline