In this 2 part series we will discuss the principles of continuous integration (CI) and how to set up CircleCI.
What is Continuous Integration
It is part of a larger concept commonly referred to as DevOps which is a practice that emphasises the collaboration of software engineers and other IT professionals. It also has a strong focus on automating the process of software delivery and infrastructure changes.
CI is a DevOps practice and other practices exist such as Continuous Delivery and Continuous Deployment. Each with the aim of detecting problems as early as possible.
Continuous Integration: is the practice of integrating code into a shared code repository so that changes can be tested frequently.
Continuous Delivery: Delivery of code into an environment once the developer feels it is ready to ship / the feature is done. This can be any environment upstream i.e. UAT, Staging or QA.
Continuous Deployment: Continuously pushing code into a production environment as soon as it is ready. In an ideal world this is done automatically (or at the push of a button).
As with many aspects of software engineering, how these practices play out in the real world is dependent on your requirements, resources and tools. For more info see this great blog by the team at Assembla
The benefits of DevOps can be summarised as:
- Lower risk of innovation, features, and fixes
- Frequent feedback loop from end-users
- Better quality software, because its being tested regularly
- More predictable releases
Now that we have a basic understanding of CI, lets see how we can implement a simple workflow.
In the next post we will discuss how to setup this workflow using CircleCI.