6 min read • Guide 626 of 877
CI/CD Best Practices
Continuous Integration and Continuous Deployment transform how teams deliver software by automating builds, tests, and deployments. GitScrum integrates with CI/CD pipelines to provide visibility into deployment status, connect releases to project progress, and ensure team coordination around automated delivery processes.
Pipeline Fundamentals
CI/CD Pipeline Stages
STANDARD PIPELINE FLOW:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌──────┐ │
│ │ Commit │→ │ Build │→ │ Test │→ │ Deploy │→ │Verify│ │
│ └────────┘ └────────┘ └────────┘ └────────┘ └──────┘ │
│ │ │ │ │ │ │
│ ↓ ↓ ↓ ↓ ↓ │
│ Push to Compile Unit + Staging Smoke │
│ branch & Package Integration or Prod Tests │
│ │
│ GITSCRUM INTEGRATION: │
│ • Task updated to "Building" │
│ • Test results linked to task │
│ • Deployment status tracked │
│ • Release notes auto-generated │
└─────────────────────────────────────────────────────────────┘
Pipeline Configuration
RECOMMENDED PIPELINE SETUP:
┌─────────────────────────────────────────────────────────────┐
│ STAGE │ TIMEOUT │ ON FAILURE │
├─────────────────┼─────────┼─────────────────────────────────┤
│ Lint/Format │ 2 min │ Block merge │
│ Unit Tests │ 10 min │ Block merge │
│ Build │ 5 min │ Block merge │
│ Integration │ 15 min │ Block merge │
│ Security Scan │ 10 min │ Warn (block on critical) │
│ Deploy Staging │ 10 min │ Stop pipeline │
│ E2E Tests │ 20 min │ Stop pipeline │
│ Deploy Prod │ 10 min │ Alert + rollback │
└─────────────────────────────────────────────────────────────┘
Test Automation
Test Pyramid
TESTING STRATEGY:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ╱╲ │
│ ╱ ╲ │
│ ╱ E2E╲ Few, slow, expensive │
│ ╱──────╲ (5-10% of tests) │
│ ╱ ╲ │
│ ╱Integration╲ Some, medium speed │
│ ╱────────────╲ (15-25% of tests) │
│ ╱ ╲ │
│ ╱ Unit Tests ╲ Many, fast, cheap │
│ ╱──────────────────╲ (65-80% of tests) │
│ │
│ EXECUTION TIME TARGETS: │
│ • Unit tests: < 2 minutes │
│ • Integration: < 10 minutes │
│ • E2E: < 20 minutes │
│ • Full pipeline: < 30 minutes │
└─────────────────────────────────────────────────────────────┘
Handling Flaky Tests
FLAKY TEST MANAGEMENT:
┌─────────────────────────────────────────────────────────────┐
│ │
│ DETECTION: │
│ • Track test pass/fail rates over time │
│ • Identify tests that fail intermittently │
│ • Set threshold (e.g., <95% pass rate = flaky) │
│ │
│ QUARANTINE PROCESS: │
│ 1. Mark test as flaky in GitScrum │
│ 2. Move to separate test suite │
│ 3. Don't block deployments on flaky tests │
│ 4. Fix or remove within 2 weeks │
│ │
│ PREVENTION: │
│ • Avoid time-dependent tests │
│ • Use deterministic test data │
│ • Isolate tests from external services │
│ • Review test design in code reviews │
└─────────────────────────────────────────────────────────────┘
Deployment Strategies
Progressive Deployment
DEPLOYMENT OPTIONS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ ROLLING DEPLOYMENT: │
│ [■■■■■□□□□□] → [■■■■■■■□□□] → [■■■■■■■■■■] │
│ Old version Gradual New version │
│ rollout │
│ │
│ BLUE-GREEN: │
│ Blue (live) ────────────┬───→ Blue (standby) │
│ Green (standby) ────────┴───→ Green (live) │
│ Instant switch, easy rollback │
│ │
│ CANARY: │
│ [■■■■■■■■■□] → [■■■■■■■□□□] → [■■■■■□□□□□] │
│ 1% traffic 10% traffic 50% traffic │
│ Gradual increase based on metrics │
└─────────────────────────────────────────────────────────────┘
Feature Flags
FEATURE FLAG WORKFLOW:
┌─────────────────────────────────────────────────────────────┐
│ │
│ 1. DEVELOP: │
│ if (featureFlags.isEnabled('new-checkout')) { │
│ return newCheckout(); │
│ } │
│ return oldCheckout(); │
│ │
│ 2. DEPLOY (flag off): │
│ Code goes to production, feature hidden │
│ │
│ 3. ROLLOUT: │
│ • Enable for internal users │
│ • Enable for beta users (10%) │
│ • Enable for all users (100%) │
│ │
│ 4. CLEANUP: │
│ Remove flag and old code after stable │
│ │
│ Track flag status in GitScrum: │
│ • Link feature tasks to flags │
│ • Track rollout progress │
│ • Document cleanup tasks │
└─────────────────────────────────────────────────────────────┘
GitScrum Integration
Pipeline Status Visibility
GITSCRUM CI/CD DASHBOARD:
┌─────────────────────────────────────────────────────────────┐
│ RECENT DEPLOYMENTS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ✅ v2.4.1 → Production 2 min ago [View Release] │
│ └── Tasks: #234, #256, #267 │
│ │
│ ✅ v2.4.1 → Staging 45 min ago [View Release] │
│ └── All tests passed (234/234) │
│ │
│ ❌ v2.4.0 → Staging 2 hrs ago [View Logs] │
│ └── Integration tests failed │
│ │
│ PIPELINE HEALTH: │
│ Today: 12 builds, 10 passed (83%) │
│ Avg build time: 8m 32s │
└─────────────────────────────────────────────────────────────┘
Automated Task Updates
CI/CD → GITSCRUM AUTOMATION:
┌─────────────────────────────────────────────────────────────┐
│ PIPELINE EVENT │ GITSCRUM ACTION │
├─────────────────────────┼───────────────────────────────────┤
│ PR opened │ Create/link task if needed │
│ Build started │ Update task to "Building" │
│ Tests passed │ Add "tests-passing" label │
│ Tests failed │ Add "tests-failing" label │
│ Deployed to staging │ Update task to "In Staging" │
│ Deployed to production │ Update task to "Released" │
│ Deployment failed │ Alert team, add blocker │
└─────────────────────────────────────────────────────────────┘