Welcome to the first module of this course. In this module we will discuss two core DevOps principles, Continuous Integration (CI) and Continuous Delivery (CD).
Let us begin by defining continuous integration (CI).
CI is defined as the process of building your code automatically in a periodic manner. Per the definition on thoughtworks.com, CI is a development practice that requires developers to integrate code into a shared repository several times a day.
The binary output from a build activity can be automatically deployed to targeted environments. This process is called continuous deployment (CD).
Per the definition on Wikipedia, CD is a software engineering approach in which software functionalities are delivered frequently through automated deployments.
Continuous deployment is distinct from continuous delivery, a similar concept in which software functionalities are also frequently delivered but deemed capable of deployment at any time (actual deployment activity may vary).
Why are these practices becoming so popular these days? What benefits do they provide?
One of the key benefits of CI/CD is that technical problems are detected as early as possible instead of being identified just before a scheduled release.
If code is built just before the release, we run a higher risk of experiencing last-minute failures or issues.
By frequently integrating changes from different teams and building an integrated code base on a regular basis we reduce risk.
Effective practices and processes for building software increases team confidence in the integrity of the product.
This process of building, testing, and deploying software frequently reduces the time needed to resolve issues and improves the quality of code.
Because the software is fully built, tested, and automated with continuous builds, the effective product Time To Market (TTM) is reduced.
All builds should have a systematic revision number allowing one to track a particular commit version and its associated code. This is incredibly helpful when troubleshooting problems.
Over time, CI/CD processes can compile quality metrics for a targeted code base and generate product statistics and trend analysis reports for use as needed.
For all these reasons, overall project cost is reduced.
This is a list of widely used CI tools. Some of them are free and some of them are licensed.
Each one has its own characteristics and features. Based on our needs we can evaluate and choose the one we want.
In this next chapter, we will focus on Jenkins. We will discuss its installation, configuration, and use over the next few chapters.