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
- Source. Triggered by a commit, tag, or pull request from the version control system.
- Build. Compile, transpile, bundle, or otherwise produce artifacts.
- Test. Unit tests, integration tests, contract tests; ideally parallelised.
- Static analysis. Linters, type checkers, SAST, license scanning, secret detection.
- Package. Container images, language packages, or platform-native artifacts pushed to a registry.
- Deploy. Apply to staging, run end-to-end tests, then promote to production.
- 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
🔗