• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Continous Delivery with CQ

Continous Delivery with CQ



Continuous Delivery is the philosophy of creating software that is in a production-ready state and can be easily deployed to a production system. ...

Continuous Delivery is the philosophy of creating software that is in a production-ready state and can be easily deployed to a production system.

How can this be achieved with a CQ website? The first step is to implement Continuous Integration as a foundation of Continuous Delivery.

Continuous Integration forces the team to continually integrate their pieces of software. If we are able to integrate all CQ components with an automated testing process, we can start to implement Continuous Delivery. This also requires that we are able to start and stop CQ automatically by script so that we can execute such automated tests. Other parts of Continuous Delivery are automated deployment to test servers and automated delivery to the customer.

This presentation gives a brief overview of Continuous Delivery and how it can be achieved with CQ. We show an example implementation of this philosophy and which tools have been successfully used in the process.



Total Views
Views on SlideShare
Embed Views



0 Embeds 0

No embeds



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • I’mvery happy tobehere, itisour last technicalpresentationtogether, so I hopeyouenjoyitPublic question: Who hasalreadyimplemented a half/fullyautomated Software Development process, speakyoursoftwareistested, deployedautomatically?I wanttoshowyouonewayhowwehaveimplemented CD, but I thinkthereareforsuresomeother, maybe also betterwaysofdoingthat. But themostimportantthingis, thatwe all havethispassionofimprovingoursoftwaredevelopmentprocess, thisshouldbeourheart.
  • V2.0, 2013-02-01
  • The heart of Software DevelopmentI love coding, I don’t want to mess with all the infrastructure, server config stuff, just want to have it running my softwarePainless processVision: One-Click Releases and Deployment to ProductionFrom my local machine to the productionSoftware only produces value if its in productionScrum idea: Create value with your product, so if your software is not in production, it does not create any value to the user!Release Process should be important to the whole team (not only "Release Manager")
  • Let’shave a nearerlookto CI/CDTherearesomediscussion on the definitive definition on thesetermsSo Cont. Int. andCont. Deliveryhappens on non-prodenvironment, wherethesoftwaregetsproducedanddeployedto test orstagesystemsThe differencebetweenCont. DeliveryandCont. Deploymentis: Ifitisonly a «flip» togowith Continuous Deployment, thenyou do Cont. Deliveryright!So thatmean: WithCont. Deliveryyouhavetoproduceproduction-readysoftware!
  • Ithinkmostofyouknowsthispatternfrom Martin FowlerCont. Integration isthedisciplinetocontinuouslyintegrate all thecomponentsofthesystemandthis in a automated, commit-basedwayMeans: If a developercommitscode, thewhole CI machinerystarts, buildsandtestsandgivefeedbacktothedeveloperifhiscommit was goodorbad.
  • Cont. Deliveryisthedisciplinetoautomatethewhole Software ProductionProcess, meansthatyouhaveatthe end a producation-readysoftware!Cont. Deliveryforcesyouto do the Fail Fast pattern, meansthatyouareforcedto bring yoursoftwareas fast aspossibletothesystemenvironmentofthecustomer, so youcandiscoverproblems on theirsystem on an earlystage.JezHumble&Co. havewritten a greatbookaboutthistopicandthey also mentionthe Pipeline pattern. The mainideaofthis Pipeline is, thatyoudefine different Quality Gates whichthesoftwarehasto pass, the Quality Gates are different kindsoftests: integrationtests, acceptancetests, performancetests, etc.
  • This isthe, I callitthe «Hardcore» discipline.The ideaofCont. Deploymentis, thateverycommittedfeatureisdirectlydeployedtotheproduction!I thinkTwitterandFoursquare do itlikethat.
  • Whyshouldweactually do Continuous Integration andDelivery?Isthereanyneedforthat? Doesithelpthebusinesstobecomemoresuccessfull?I wouldsay: Yes!
  • This is a bit a moredifficultpartBecauseitdepends also on thecustomerDepends on thecustomeroperationunit
  • Project structureoverviewStartwithintegration (CI)CQ installation (alreadydonebecauseof time)CQ start/stop (showpomconfig)CQ packagedeployment (showassemblyconfig)Then CDExplainconfiguration, deliveryandinfrastructureDeliveryinstallscript

Continous Delivery with CQ Continous Delivery with CQ Presentation Transcript

  • Continuous Delivery with CQThe way of automating the Software Development processOliver BurkhalterBasel, 20. Juni 2013
  • © Unic - Seite 2Agenda• About me• Continuous Integration(CI) and Continuous Delivery(CD)• CQ and CI/CD implementation example• Demo
  • © Unic - Seite 3• Oliver Burkhalter (age = 28)• Since 2007 at Unic AG• Likes: Software Development, People/Teams, Baking, Thun CityAbout me
  • © Unic - Seite 4One-ClickReleasesDeploymentsProduction
  • © Unic - Seite 5What is CI and CD?ContinuousIntegrationContinuousDeliveryContinuousDeploymentNon-Production environment Production environment
  • © Unic - Seite 6• Continuous Integration:• Team members integrate their work daily• All the components are automatically integrated and tested by the CI systemWhat is CI and CD?
  • © Unic - Seite 7• Continuous Delivery:• Is the advancement of CI• Is an end-to-end approach (from dev to end user)• Software is always in a production-ready state• It is the technique to automate thebuild, test and deployment process• Fail Fast pattern• Pipeline Pattern from Jez Humble&Co.What is CI and CD?
  • © Unic - Seite 8• Continuous Deployment:• Continuously deployment to the Production environment (one-click idea)• From Development to Production• “Extreme Cont. Delivery”What is CI and CD?Deployment
  • © Unic - Seite 9Why
  • © Unic - Seite 10
  • © Unic - Seite 11• Forces us to write Quality software• The overall Thinking changes fromdev -> test system to dev -> end user system• Faster release cycles are possible• Automated Software Development Process is less error prone• Team Ownership of the release process (not only «Release Manager»,infrastructure is also code)• Everybody can do a release (one click)Why?
  • © Unic - Seite 12Implementation example stackWriteBuildTestDeployRunApache MavenJenkinsJUnitHtmlUnitJenkinsAntJenkins
  • © Unic - Seite 13• With Maven Plugins: Auto start/stop of CQ, deployment of CQ packages over theCRX HTTP interface• Running auto. tests with JUnit and HtmlUnit• Set of unit and integration tests• Automated Acceptance tests still in progressFoundation: CI
  • © Unic - Seite 14• Separate “delivery” and “infrastructure” Maven module• Delivery:• Deployment scripts• Filtering files• Infrastructure• Environment-specific configurations• Done with Ant scripts and custom Ant tasksNext: Continuous Delivery
  • © Unic - Seite 15• Direct deployment to the customers production environment• Depends also on the customer• Example: Trusted Maven RepositoriesNext 2: Continuous Deployment
  • © Unic - Seite 16Demo
  • © Unic - Seite 17Click to edit Master title styleHow do you do it / Questions
  • © Unic - Seite 18Click to edit Master title styleThank you!
  • © Unic - Seite 19• http://martinfowler.com/articles/continuousIntegration.html• http://martinfowler.com/delivery.html• http://continuousdelivery.com/2010/08/continuous-delivery-vs-continuous-deployment/• Images from Gettyimages as license-freeReferences