What is the difference between continuous integration and continuous delivery?

Asked

Viewed 1,508 times

26

They are two widely used terms, and often even as synonyms. But what is the difference between them (if any)? What are the most common tools used in both scenarios?

  • https://about.gitlab.com/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/

4 answers

15

Integration is process. Delivery is result.

Continuous integration is a process for the purpose of controlling the code lifecycle of a system developed by several people and which has several distinct modules that need to be "integrated". In addition to being integrated this process tries to ensure that it occurs continuously, that is, that there is a certain standard in the procedures that allows to treat the problems that occur in a logical way without having to stop to think about the solution to each problem.

The most common parts of continuous integration (very briefly) are:

  • Repositories of source code: where you can control the versions, ie it is possible to have a "photo" of the source code of each package you want to release for testing, for example. The most common is a Git repository.
  • Build Stages: in which you may have a script automated compiling source code and generating a testable "package" of your system. In the event that the code does not compile, developers are alerted as soon as they do commit of the sources.
  • Stages of Testing: where you can perform manual or automated tests (unit, integration, etc.) of your packages.
  • Setup: in which you can generate a "package" of the entire system and which can be installed in a testing or production environment.
  • Implantation: where there may be a script to install the "package" automatically in the production environment.

Continuous delivery is a result of the continuous integration process with delivery of installable packages to the customer, that is, each period is delivered a package of the system that contains the adjustments and new functions.

In this way, it is possible to have the continuous integration process without necessarily making continuous deliveries. The term "Continuous Integration" comes from the 1990s and "Continuous Delivery" is newer because it has become more viable with new technologies and software dedicated to running and monitoring processes.


Recently (for me) another term appeared in this process called Continuous Deployment. Basically, not to go into detail, the deployment would be a step beyond delivery. Delivery ends with a system ready to be deployed in a customer or in a production environment, whereas continuous deployment would be the process in which this part would also be automated.

I updated the steps in the list above with this new phase of the process.

  • I liked the concept of continuous deployment. I would like to read more about it. If you think it’s not within the scope of this answer, you could ask a self answered question and link here (or comment below). I would be grateful. By the way, I don’t know how to approach a question on the subject, so I don’t do it myself

  • 1

    @Jeffersonquesado I took this concept in a podcast episode. If you want to read more I think you can start with the book of Danilo who participated in the episode. On the podcast page is the link to his book.

  • Congratulations on the excellent answer!

11

Searching on the Internet:

The Continuous Integration promotes joint work and for this it is essential that the use of a version control solution such as Gitlab, Github, CVS or Subversion. These tools create a main repository to store the code and maintain versions with each modification made so that it is possible to reverse and audit them whenever needed.

The Continuous Delivery is a set of practices aimed at ensuring that a new code is available in a production environment. The practice incorporates in addition to all actions foreseen in the Continuous Integration, additional processes and necessary for the modification to be accessible to users and thus final inspections, whether manual and/or automated.

  • 2

    what you wrote about continuous integration, would only be version control, ie, part of a much larger process.

7

Taking advantage of Amazon’s settings:

https://aws.amazon.com/pt/devops/continuous-delivery/

Continuous delivery is a Devops software development practice where code changes are created, tested and automatically prepared for release for production. It expands based on continuous integration by deploying all code changes in a test environment and/or production environment after the creation stage. When continuous integration is implemented properly, developers will always have a creation artifact ready to be deployed that has undergone a standardized testing process.

https://aws.amazon.com/pt/devops/continuous-integration/

Continuous integration is a Devops software development practice in which developers often bundle their code changes into a central repository. After that, creations and tests are performed. Generally, continuous integration refers to the stage of creation or integration of the software release process, in addition to originating an automation component (e.g., an IC or creative service) and a cultural component (e.g., learning to integrate frequently). The main goals of continuous integration are to find and investigate bugs faster, improve software quality and reduce the time it takes to validate and release new software updates.

3

devmedia also talks about the subject:

Continuous integration is a term originated in the agile methodology XP and used in various methodologies, consisting of something simple: the developer integrates the code changed and/or developed to the project at the same frequency as the functionalities are developed, being done many times a day instead of just one time. The main objective of using continuous integration is check that changes or new features have not created new ones defects in the existing design. The practice of continuous integration can be done through manual or automated processes, using tools such as Jenkins, Hudson and others.

Continuous Delivery Exists for Features to Be Released continuously and securely for the customer. Imagine that the submit a file to the source code repository, the type-approval is automatically updated and the adjustment is available for testing without the need for manual intervention.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.