Litmus test for CI/CD pipelines
In chemistry, litmus paper is a thin strip of paper treated with a special red or blue dye that is used to determine the acidity of a substance. An acid turns blue litmus paper red, a base turns red litmus paper blue, and neutral substances don't affect the paper's color at all.
The way litmus paper determines acidity is by measuring a substance's pH level. If a pH level is higher than 8, it's acidic; if it's below 5, it's basic; and if it's between 5 and 8, it's neutral. Similarly, the CI/CD litmus test
To test whether your pipeline is fully CI/CD
Start with a score of 0.
Answer each of the following questions, and add 1 to your score for each time you answer yes:
Do our repositories each have exactly one main branch that is used to deploy to environments?
Do we commit code to the main branch frequently and avoid having long-running feature branches?
Does our pipeline have a single point of entry? In other words, does our pipeline pull the code from each repository exactly one time?
Do we have more than one deployment environment?
When the pipeline is not running, are our upper and lower environments generally in sync?
Do we run tests on code before deploying?
Do we run tests on an environment before promoting to the next environment?
Does our pipeline do a full rollback and exit after a failure?
Does our pipeline restart from the first step when recovering from a failure?
Do we follow the same process to fix bugs in production that we do to release features to production?
Do we use some form of infrastructure as code (IaC) templates to deploy code?
Answer each of the following questions, and add 1 to your score for each time you answer no:
Do we ever deploy directly into a deployment environment from branches other than the main branch?
Do we ever deploy directly from any branch to an upper or production environment?
Do we often find bugs in upper environments that were not present in lower environments?
Do we ever bypass lower environments during a deployment?
Do we wait until a scheduled release time to deploy to production?
Do we regularly make updates in the production environment's console?
Are there any manual deployment steps that must be done in the production environment's console in order to complete deployment?
Does more than one person have write access to the production environment?
Do more than five people have write access to the production environment?
Divide your score by 2. This is your pipeline's CI/CD score.
Compare your pipeline's CI/CD score to the following table to determine your pipeline's CI/CD level.
CI/CD score
CI/CD level
9.5 or above
Fully CI/CD
8–9
Mostly CI/CD
5–7
Neutral
Below 5
Not CI/CD
If you scored below 8, we recommend that you set a goal to move gradually toward the next level. When that goal is achieved, then product stakeholders should assess if and when a new goal should be set. The intention of this exercise is not necessarily to advocate for a change to your pipeline, but rather to bring awareness of what a fully CI/CD deployment process looks like and where your pipelines currently sit on that spectrum.