CI/CD stands for Continuous Integration and Continuous Deployment, and it’s an increasingly popular set of practices for development teams to follow. Almost every engineering role we take on is looking for CI/CD, and many clients have made reference to finding engineers with a DevOps mentality. So what is CI/CD, and why are so many employers looking for it?
The goal of CI/CD is to write and test quality code that’s put live faster, and doesn’t break anything along the way! How this is achieved will vary depending on your environment, but the process looks to test and release often, automating as much as possible.
I like the analogy used by global trainer Bret Laster, likening the process to a traditional factory assembly line. The factory wants to produce goods from raw materials in a ‘fast, automated, reproducible manner’. A software delivery pipeline is basically the same, producing releases from source code with the same aim.
- The overall design accounts for Continuous Delivery.
- The process that kicks off the assembly line is Continuous Integration.
- The process that ensures quality is Continuous Testing.
- The process that makes the end product available to users is Continuous Deployment.
So, what does this mean in practice and what tools are commonly used to help?
Continuous integration is the process of automatically detecting, pulling, building and testing as source code is changed. You need everyone contributing code to a single repository, and then you can use various applications to detect any changes and take the necessary next steps.
One of the most common tools to detect change is Jenkins, which increasingly can be used to manage most of the processes running in the pipeline. Unit tests are used to make sure that any new code works in isolation, and doesn’t break any of the existing application. In a TDD (Test Driven Development) environment these tests will be written before the actual code so there’s a clear objective and standard set first.
Other forms of testing can also be used, like integration testing, functional testing and acceptance testing. Ultimately the goal of all the testing is to ensure the code works and that it’s of a quality that can be released. By doing this constantly throughout the process (and automating as much as you can) the deployment can be much faster and more successful.
Why are companies increasingly talking about a “DevOps Mentality”?
CI/CD is closely aligned with some of the core themes of DevOps – short cycles of development and automation of repeatable tasks etc. This is becoming increasingly important to all modern businesses, as software is an integral part of most companies. If a DevOps team are brought in to help align the development team and the operations team in a business, then CI/CD is the natural extension of that mindset.
Some of the key benefits of this culture will be speed and reliability, which together are fundamental for businesses looking to scale. I don’t think we’ll stop hearing about it’s importance for a while, even if clients still have different ideas of what it should look like.
This blog post was written by Kieran George, our awesome Principal Tech Consultant, who specialises in Software Development and Product Management.
If you’re looking for a new job in tech or software development, or you’re hiring for your team, connect with Kieran here!
Or you can check out our latest jobs!