MongoDB
Designing a Code Deployment Pipeline (CI/CD)
Build an automated CI/CD pipeline — source control triggers, build automation, testing, container builds, and progressive deployment.
S
srikanthtelkalapally888@gmail.com
Designing a CI/CD Pipeline
A CI/CD pipeline automates the path from code commit to production deployment.
Pipeline Stages
Code Push
↓
CI Pipeline:
1. Checkout code
2. Install dependencies
3. Lint + static analysis
4. Unit tests
5. Integration tests
6. Build Docker image
7. Push to registry
↓
CD Pipeline:
8. Deploy to staging
9. Smoke tests
10. Manual approval (production)
11. Deploy to production (canary → full)
12. Post-deploy tests
Test Pyramid
E2E Tests (slow, few)
Integration Tests
Unit Tests (fast, many)
Aim: 70% unit, 20% integration, 10% E2E.
Docker Build Optimization
# Layer caching — dependencies before code
COPY package.json .
RUN npm install # Cached if package.json unchanged
COPY src/ . # Only this invalidates cache
RUN npm run build
Multi-stage build:
FROM node:18 AS builder
RUN npm run build
FROM node:18-alpine AS runtime
COPY --from=builder /app/dist .
# Final image: ~50MB instead of ~500MB
Artifact Management
Docker Registry: ECR, GCR, Docker Hub
Helm Charts: Git repo, ChartMuseum
Maven/npm: Nexus, Artifactory
Environment Strategy
Dev → Auto-deploy on every commit
Staging → Auto-deploy on merge to main
Prod → Manual trigger (or canary auto)
Rollback
Auto rollback: Error rate > 5% in 10 min
Manual: Redeploy previous image tag
Tools
| Category | Tools |
|---|---|
| CI | GitHub Actions, Jenkins, GitLab CI |
| CD | ArgoCD, Spinnaker, Flux |
| Registry | ECR, GCR, Harbor |
| K8s deploy | Helm, Kustomize |
Conclusion
Great CI/CD pipelines run in <15 minutes, enforce test gates, and enable one-click rollbacks. Speed and safety are equally important.