Practice : Continuous Delivery Pipelines
Purpose and Strategic Importance
Continuous Delivery Pipelines are the backbone of Agile software delivery. They automate the path from code commit to production, enabling teams to release changes frequently, safely, and with high confidence.
By reducing manual steps, bottlenecks, and variability, CD pipelines shorten lead times, improve feedback loops, and reduce the risk of release failures. They allow teams to deliver value at the pace of readiness—not the pace of bureaucracy.
Description of the Practice
- A Continuous Delivery pipeline automates the build, test, and deployment workflow from source control to production.
- Pipelines enforce quality gates (e.g. tests, security scans, compliance checks) before progressing changes.
- Every code change is integrated, validated, and packaged for deployment in a consistent and repeatable way.
- Pipelines are visible, monitored, and version-controlled.
- Teams treat pipeline health as a priority equal to product quality.
How to Practise It (Playbook)
1. Getting Started
- Set up a basic CI/CD pipeline using tools such as GitHub Actions, GitLab CI, Azure Pipelines, or Jenkins.
- Include automated build, unit tests, and packaging steps in the initial pipeline.
- Ensure that a successful build is required before changes can be merged or deployed.
- Deploy to a test environment automatically on each commit.
2. Scaling and Maturing
- Add integration, security, performance, and end-to-end tests into the pipeline stages.
- Include observability checks and automated release notes generation.
- Use branch policies and trunk-based development to maintain flow.
- Promote artifacts between environments with auditability and rollback options.
- Monitor pipeline duration, flakiness, and failure rates to drive improvement.
3. Team Behaviours to Encourage
- Treat pipeline failures as team-level problems to fix quickly.
- Keep pipelines green—do not ignore broken stages or skipped tests.
- Optimise for feedback speed without compromising safety.
- Encourage developers to run pipelines locally or on feature branches before merging.
4. Watch Out For…
- Overly complex pipelines that are hard to understand or maintain.
- Slow pipelines that discourage frequent commits or rapid feedback.
- Pipeline failures going unnoticed or being routinely bypassed.
- A lack of clear ownership or visibility into pipeline health.
5. Signals of Success
- Code is deployed to production safely and frequently—often multiple times per day.
- Lead time for change decreases while quality and stability improve.
- Teams trust the pipeline and rely on it to validate change readiness.
- Pipeline failures are rare, visible, and resolved quickly.
- Deployment is no longer a bottleneck, but a routine, low-risk activity.