Technology updates impacted many aspects of day-to-day life for most of the industries. One aspect that is often unappreciated is that software development have changed the expectations regarding technology.

Software is being adopted at unprecedented rates of changes and constantly still are coming out all the time which is putting a strain on traditional software development processes. Frequently testing, integrating and deploy the changes are the most challenging part of development process.

Test automation and continuous integration and continuous deployment is the answer to that challenge.

A continuous integration and deployment pipeline is such an important aspect of a software project.

it saves a ton of manual error-prone deployment work and it results in higher quality software for continuous integration automated tests and code metrics.

So what continuous integration and continuous deployment ?

Continuous Integration

Let’s say we have multiple developers working on the same application each of them have their own feature or bug fix that they are working on and they are all contributing to the same application by pushing their code into the same code repository. The code repository could be a version control system like github when a developer pushes a code to the repository it should linked to a build management system like jenkins for instance that takes the code and builds it.

Since there are multiple developers pushing their code to the same application, we would like to make sure that it builds correctly and does not introduce any new issues into the application. for this we could configure the build system to run tests on the build package.

If your application is based on java then you can think of this as a jar file.

Once the tests pass successfully we can confirm that the build cycle is complete. This whole process of enabling multiple developers to work seamlessly on the same application and at the same time ensuring that these new changes integrate automatically into the application without introducing any new issues is known as continuous integration.

Continuous Delivery and Continuous Deployment

CD refers to two things continuous delivery and continuous deployment. So far we have coded our application built and tested it all through automated pipeline using code repositories and build and test systems.

what do we do once testing is successful the next step is to release our new version of the application. Now that could be packaging the build application to an executable or an RPM package or into an ISO of some kind and make it available online.

So users can download and deploy the application in their environments. Releasing the software this way automatically through a pipeline is known as continuous delivery. So the next step would be to take the packaged application and automatically deploy it in a target environment like Google or AWS.

So this process of automatically updating our production environment with the changes in the application is referred to as continuous deployment.

So if you look at it again from the beginning,  

1. Application code is changed and pushed to the code repository

2. Automatically built the changes and tested through a build pipeline

3. Finally, deployed in production to a target environment

All the processes are integrated and automated without requiring any manual intervention this is referred to as continuous integration and continuous deployment. 

The CI/CD practices and tools automates everything for the organizations to deliver new features to users as fast and efficiently as possible.