Continous Delivery with CQ

Post on 13-Jan-2015

444 views 3 download

Tags:

description

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.

Transcript of Continous Delivery with CQ

Continuous Delivery with CQThe way of automating the Software Development process

Oliver BurkhalterBasel, 20. Juni 2013

© Unic - Seite 2

Agenda

• 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 City

About me

© Unic - Seite 4

One-Click

Releases

Deployments

Production

© Unic - Seite 5

What is CI and CD?

Continuous Integration

Continuous Delivery

Continuous Deployment

Non-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 system

What 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 the

build, 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 9

Why

© Unic - Seite 10

© Unic - Seite 11

• Forces us to write Quality software

• The overall Thinking changes from

dev -> 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 12

Implementation example stack

Write

Build

TestDeploy

Run

Apache MavenJenkins

JUnitHtmlUnitJenkins

AntJenkins

© Unic - Seite 13

• With Maven Plugins: Auto start/stop of CQ, deployment of CQ packages over the

CRX HTTP interface

• Running auto. tests with JUnit and HtmlUnit

• Set of unit and integration tests

• Automated Acceptance tests still in progress

Foundation: 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 tasks

Next: Continuous Delivery

© Unic - Seite 15

• Direct deployment to the customer's production environment

• Depends also on the customer

• Example: Trusted Maven Repositories

Next 2: Continuous Deployment

© Unic - Seite 16

Demo

© Unic - Seite 17

Click to edit Master title styleHow do you do it / Questions

© Unic - Seite 18

Click to edit Master title styleThank you!