Getting Started with Continuous Delivery
7 minute read
This guide provides actionable steps teams can take in their first week to begin implementing Continuous Delivery practices. Start small, measure progress, and build momentum.
Before You Begin
Continuous Delivery is a journey, not a destination. You don’t need to have everything perfect before you start. Focus on making incremental improvements and learning from each change.
Prerequisites
- A source code repository with your application
- A basic build process (even if manual)
- At least one deployed environment
- Team buy-in to try new practices
Week 1: Foundation
Day 1: Establish Your Baseline
Action: Measure your current state
Before improving, understand where you are. Capture these baseline metrics:
Why this matters: You can’t improve what you don’t measure. These numbers will guide your improvement efforts and prove progress.
Day 2: Define Your Working Agreement
Action: Create a CI Working Agreement
Have a team discussion and agree to start with these practices:
Tip
Start with what feels achievable, then tighten the agreement as you improve. It’s better to keep a loose agreement than break a strict one.Day 3: Automate Your Build
Action: Create a scripted build process
If your build has any manual steps, automate them first.
Example build script:
Success criteria:
- Anyone can build from a clean checkout with one command
- Build includes automated tests
- Build produces the same artifact every time
Day 4: Set Up Continuous Integration
Action: Configure automated builds on every commit
Choose a CI server (GitHub Actions, GitLab CI, Jenkins, etc.) and configure it to:
- Trigger on every push to trunk
- Run your build script (from Day 3)
- Fail the build if tests fail
- Notify the team when builds break
Minimal GitHub Actions example:
Critical
When the build breaks, stop everything and fix it. A broken trunk means no one can integrate safely. This is your new highest priority.Day 5: Implement Trunk-Based Development
Action: Move to short-lived branches
Today’s changes:
- Delete all long-lived feature branches (merge or abandon)
- Set branch protection rules:
- Require PR reviews (1 reviewer minimum) - Require CI to pass - Delete branch after merge - Create a branching guide:
See Trunk-Based Development for detailed patterns.
Week 2: Delivery Pipeline
Build a Basic Deployment Pipeline
Action: Automate deployment to one environment
Start with your dev or test environment:
Key principles:
- Same artifact flows through all environments
- Configuration is external to the artifact
- Deployment is scripted (no manual steps)
- Failed deployments stop the pipeline
Implement Automated Rollback
Action: Ensure you can roll back automatically
Week 3: Improve Quality Feedback
Expand Test Coverage
Action: Add tests for your critical paths
Priority order:
- Integration tests for API contracts (fastest value)
- Unit tests for business logic
- End-to-end tests for critical user journeys (max 3-5)
See Testing Quickstart for detailed testing guidance.
Speed Up Feedback
Action: Optimize CI to run under 10 minutes
If you’re over 10 minutes:
- Run tests in parallel
- Cache dependencies
- Split slow tests into separate pipeline
- Remove or optimize slow tests
Week 4: Continuous Improvement
Set Up Metrics Dashboard
Action: Make key metrics visible
Track these metrics from Week 1:
- Integration frequency (pushes to trunk/day)
- Build duration
- Build failure rate
- Cycle time (commit to production)
See Metrics Quickstart for implementation details.
Hold Your First Retrospective
Action: Review what’s working and what’s not
Retrospective format:
Duration: 1 hour
1. Review metrics (10 min)
- What improved?
- What got worse?
2. Three questions (30 min)
- What's slowing us down?
- What's one thing we could improve?
- What do we want to try next?
3. Action items (20 min)
- Pick ONE thing to improve
- Define success criteria
- Assign owner
- Set review date
Common Challenges & Solutions
“Our branches take 3 days to merge!”
Root causes:
- Stories are too large
- PRs are too large
- Async code review process
Solutions:
- See Story Slicing
- Break PRs into < 400 line changes
- Pair program or mob program to eliminate review wait time
- Set team agreement: review within 2 hours
“We can’t merge daily, our work takes weeks!”
Reality check: The work doesn’t take weeks. The story takes weeks.
Solution:
- You can merge incomplete features using:
- Feature flags
- Branch by Abstraction
- Hidden UI elements
- API versioning
See Work Breakdown for techniques.
“Our tests are too slow!”
Common issues:
- Too many E2E tests
- No test parallelization
- Testing anti-patterns (see Ice Cream Cone)
Solutions:
- Convert E2E tests to integration tests
- Use test doubles
- Run tests in parallel
- See Testing Best Practices
“We have dependencies on other teams”
Options:
- Mock the dependency during development
- Use contract testing to verify compatibility
- Reorganize teams around business capabilities (Conway’s Law)
See CD Problems for more blockers and solutions.
Success Criteria
After 4 weeks, you should have:
✅ Baseline metrics captured and visible to the team ✅ CI working agreement established and followed ✅ Automated build that runs on every commit ✅ Short-lived branches (< 24 hours) ✅ Basic deployment pipeline to at least one environment ✅ Team retrospective scheduled and completed
Next Steps
Once you’ve established the foundation:
- Reduce cycle time - See Development Cycle Time
- Improve test architecture - See Test Patterns
- Automate production deployment - Progress from manual trigger to automatic
- Implement blue/green deployments - Enable zero-downtime releases
- Add progressive rollout - Feature flags with percentage-based rollout
Further Reading
- CI Working Agreement - Detailed practices
- CD Roadblocks - Common issues and solutions
- Delivery System Improvement Journey - Long-term roadmap
- Continuous Delivery Book - Jez Humble & David Farley
- MinimumCD.org - Community-defined CD practices
Questions?
Common questions teams ask:
Q: Can we skip steps? A: You need the foundation (Days 1-4) before the delivery pipeline will work. After that, adapt to your context.
Q: What if management won’t let us merge daily? A: Start by demonstrating value. Show reduced bugs, faster delivery, and improved predictability. Data wins arguments.
Q: Do we need to do all this before starting CD? A: No! This guide IS starting CD. You’ll refine practices as you go.
Q: How do we handle database changes? A: Database changes must be backward compatible. Deploy schema changes separately from code changes. More at CD Problems.