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.