Pipeline

A pipeline is the automated sequence of stages a code change passes through on its way from a developer's commit to production. Modern CI/CD pipelines codify build, test, security scan, package, and deploy steps so every change moves through the same checks in the same order.

Typical stages

  1. Source. Triggered by a commit, tag, or pull request from the version control system.
  2. Build. Compile, transpile, bundle, or otherwise produce artifacts.
  3. Test. Unit tests, integration tests, contract tests; ideally parallelised.
  4. Static analysis. Linters, type checkers, SAST, license scanning, secret detection.
  5. Package. Container images, language packages, or platform-native artifacts pushed to a registry.
  6. Deploy. Apply to staging, run end-to-end tests, then promote to production.
  7. Post-deploy. Smoke tests, synthetic checks, observability hooks.

Design considerations

  • Parallelism. Run independent stages in parallel to shrink wall-clock time.
  • Caching. Cache dependencies, layers, and test artifacts between runs.
  • Selective execution. Run only what changed (monorepo affected detection).
  • Approvals. Manual gates before production deploys for regulated or high-impact services.
  • Reproducibility. Pipelines as code (YAML in the repo) so the same change yields the same run.

Common pipeline platforms

  • GitHub Actions, GitLab CI, CircleCI, Buildkite, Jenkins, Drone, Tekton, Argo Workflows, AWS CodePipeline, Google Cloud Build

Subscribe to Sahil's Playbook

Clear thinking on product, engineering, and building at scale. No noise. One email when there's something worth sharing.
[email protected]
Subscribe
Mastodon