I got inspired by a similar question on the Stackoverflow.com and after reading what Martin Fowler has written (and Jez Humble, of course at http://continuousdelivery.com/), I still struggle to understand the difference, or the border line, between continuous integration and continuous delivery.

Let's assume there is a simple system with a front-end interface. Each commit to Git causes the integration machine to build the project, run both unit and integration tests and notify about the result.
And now - the app gets deployed to a test environment so as to perform QA activities by QA guys. Is that continuous delivery? If not, why? I can see a lot of contradicting information in the literature.

  • 1
    Can you link to the other posts that you've read? Without knowing what you've read on Stack Overflow or what Martin Fowler and Jez Humble have written, we don't have enough context to see where you're coming from.
    – Thomas Owens
    Commented May 10, 2016 at 17:23
  • Thanks, adding those. However I meant it the way the all provide a lot of information that seems to be rather fuzzy.
    – Melioer
    Commented May 10, 2016 at 17:25
  • 2
    I think "should" is highly subjective, and depends greatly on type type of software being developed. Mission critical? Probably not. Personal project? Sure, why not? Typical business app? It depends. Commented Aug 8, 2016 at 19:07

2 Answers 2


Continous delivery (CD from now on)

Each commit to GIT causes the integration machine to build the project, run both unit and integration tests and notify about the result. And now - the app gets deployed to a test environment so as to perform QA activities by QA guys. Is that continuous delivery?

The case you expose might not be considered CD

Companies like mine use Jenkins (CI tool) to automate the process of performing unit tests, packaging and deployment in test servers after Git commits. But this is quite far to be CD. It just serves us to save time and keep the wheel (QA or other dev teams) moving on.

CD is an strategy applied to software lifecycle. To the whole lifecycle

It has by main goal to reduce costs times and risk. How? Producing software in short cycles, performing test, builds and releases frequently.

Frequent deployments on production (release) demands flexebility at delivery management. What it's intended is to release bugs fixs/upgrades/updates anytime. As straightforward as possible. Moreover, by any member of the team.

Other reasons behind CD: high availability is needed (by critical systems) or continous feedback from users (or customer) is wanted.

Back to the question: Should Continous Integration do deployments on environments?

Answer: We are mixing concepts.

CI is related to make periodic the process of compiling and testing, in order to garantee the stability of the code during its life time. Happens here that CI tools are also capable to perform deployments. But such "capability" (being dogmatic) is not related to CI.

However It's a good way to say: "I can be used as tool for deployments if you need to automate deployments".

and why?

As we pointed CD aims at building and test frequently. Here is where CI shinnes. It automate such task.. But the task itself is just a part of the lifecycle.

  • Well, that is exactly what I am talking about - your definition of CD actually fits more to Continuous Deployment. Most literature mention that "CDelivery is about giving access to the build to QA and other stakeolders to perform in-depth testing". Even the Wikipedia article mentions manual testing as a validation check to be done during CD.
    – Melioer
    Commented May 10, 2016 at 17:47
  • We here call Delivery to the process of delivery the release on production. For test/int we say just deployments. Even if QA and these others stackholders are external to your comp, the term applies too. These stackholders are not testing a final release just an iteration. But yes, all these terms might seem so overlapped each other.
    – Laiv
    Commented May 10, 2016 at 18:09
  • Well but then you are confusing continuous delivery for continuous deployment. These three terms (together with CI) are the subject of of confusion.
    – Melioer
    Commented May 10, 2016 at 18:13
  • 1
    Just want to point out that the article you linked to has the complete opposite definition for continuous delivery and continuous deployment than what you used. "Continuous deployment means that every change is automatically deployed to production. Continuous delivery means that the team ensures every change can be deployed to production but may choose not to do it ..."
    – Eric King
    Commented Aug 8, 2016 at 20:16
  • Edited. I tried to make answer cleaner and easy to understand. Hope it will help. As @EricKing pointed, I was falling in some contradictions, reason why I retyped the whole answer.
    – Laiv
    Commented Sep 7, 2016 at 22:50

Is that continuous delivery?

No. Continuous delivery is a practice. It's a way of developing software. It isn't something that can be automated although there are automatic tools designed to support it.

CD is about how the software is written - in CD each commit is intended to produce a deliverable version of the software.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.