xxxxxxxxxx
Continuous Integration is something that is used for streamlining the development
and deployment process. These lead to the more rapid development of cohesive software.
Continuous Delivery is on the other hand is a process where your code after being pushed
to a remote repository can be taken to production at any time.
In the above diagram our integration test and unit test are performed without
any manual intervention and after UAT we just needed the approval
to ship our tested features to production and to make such a process we need CI/CD.
xxxxxxxxxx
Continuous Integration is a software development practice
where members of a team integrate their work frequently, usually,
each person integrates at least daily leading to multiple integrations per day.
Each integration is verified by an automated build
(including test) to detect integration errors as quickly as possible.
Many teams find that this approach leads to significantly reduced
integration problems and allows a team to develop cohesive software
more rapidly.
Continuous Delivery is a process where you build software
in such a way that it can be released to production at any time.
Consider the diagram below:
Let me explain the above diagram:
• Automated build scripts will detect changes
in Source Code Management (SCM) like Git.
• Once the change is detected, source code
would be deployed to a dedicated build server to make sure build
is not failing and all test classes and integration tests are running fine.
• Then, the build application is deployed on the test servers
(pre-production servers) for User Acceptance Test (UAT).
• Finally, the application is manually deployed
on the production servers for release.
A set of practices and tools for quickly and consistently building, testing, and deploying software applications.
CI/CD (Continuous Integration/Continuous Delivery) is a set of practices and tools that enable teams to quickly and consistently build, test, and deploy software applications.
It typically involves the use of automation and collaboration tools to automate the build, test, and deployment processes, as well as agile and continuous delivery processes to ensure that new versions of the application are delivered quickly and reliably.
xxxxxxxxxx
CI/CD is a method to frequently deliver apps to customers by introducing
automation into the stages of app development. The main concepts attributed
to CI/CD are continuous integration, continuous delivery,
and continuous deployment.
CI/CD is a solution to the problems integrating new code can cause for
development and operations teams (AKA "integration hell").
Specifically, CI/CD introduces ongoing automation and continuous monitoring
throughout the lifecycle of apps, from integration and testing phases to
delivery and deployment.
Taken together, these connected practices are often referred to as a
"CI/CD pipeline" and are supported by development and operations teams
working together in an agile way with either a DevOps or
site reliability engineering (SRE) approach.