CI does not end up on production systems, so CI does not require as
rigourously reproducible a build as CD.

With CI, what you want to have happen is the latest code ends up on an
integration system and integration tests are run against the
integration system in order to identify integration issues before the
code goes to QA.

With CD you have as much of the QA process automated as you are
comfrtable with, and when you kick off a build, it will automatically
run though an entirely automated process that ends up with the build
either failing or being deployed onto the live system... (note that
you might have one or two manual verifications before deploying to
production systems, but sooner or later you will have developed enough
confidence in your CD process that you can feel confident removing the
manual blocks)

With CI, I can quite happily work with -SNAPSHOTs because all I need
to know is that something is broken.

With CD, I need releases (but perhaps more lightweight than Maven's
current release process... perhaps I do not need to create tags).

The question is what triggers the deploy in CD.

There are a number of possible triggers:

1. Manual trigger... where I click a button and the whole process starts
2. CI trigger... where a CI build passing triggers the whole process
3. Commit trigger... where any commit triggers the whole process.

The problem with #1 is that you have to remember to trigger

If you are doing CD correctly, then #2 and #3 are actually the same
thing with just a re-ordered pipeline.

#2 goes a little something like this
2.1 A commit triggers a build
2.2 The build passes and triggers a CI build
2.3 The CI build deploys to the integration system and runs the
integration tests
2.4 The CI build passes and triggers the CD build
2.5 The CD build runs a release of the software
2.6 The CD build deploys the release to the integration system and
runs the integration tests
2.7 The CD build runs the last ditch "no egg on face" tests that could
take a bit longer than integration tests (e.g. full regression)
2.8 All tests have passed and the CD build meets the release to
customer criteria
2.9 The CD build deploys the release to production systems
2.10 we are live

while #3 goes a little something like this
3.1 The CD build runs a release of the software
3.2 The CD build deploys the release to the integration system and
runs the integration tests
3.3 The CD build runs the last ditch "no egg on face" tests that could
take a bit longer than integration tests (e.g. full regression)
3.4 All tests have passed and the CD build meets the release to
customer criteria
3.5 The CD build deploys the release to production systems
3.6 we are live

#2 saves on the churn of making releases but reduces the response time
for deployment.

In any case you also want an automated process that allows you to roll
the production system back to a previous state just in case the "no
egg on face" tests let some egg slip through to your face!

-Stephen
On 8 November 2010 14:27, Thiessen, Todd (Todd) <tthies...@avaya.com> wrote:
> True. But how does that change my statement? It still appears we may have a 
> different definition of CI.  Because in order to do CD, you would no longer 
> be doing CI.
>
> Unless of course the original poster is suggesting to abandon CI.
>
>> -----Original Message-----
>> From: Stephen Connolly [mailto:stephen.alan.conno...@gmail.com]
>> Sent: Monday, November 08, 2010 9:17 AM
>> To: Maven Users List
>> Subject: Re: Continuous Delivery and Maven
>>
>> On 8 November 2010 13:30, Thiessen, Todd (Todd) <tthies...@avaya.com>
>> wrote:
>> > Interestingly enough, I kind of feel that we have a different
>> definition of continuous integration.
>> >
>>
>> Interestingly enought, the original poster is talking about Continuous
>> _D_E_L_I_V_E_R_Y_ as distinct fron Continuous Integrration ;-)
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>> For additional commands, e-mail: users-h...@maven.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to