FISL 2010: CruiseControl: the open source that changed the way we develop software

Post on 10-May-2015

1.475 views 1 download

Tags:

description

the practice and the history of Continuous Integration and CruiseControl

Transcript of FISL 2010: CruiseControl: the open source that changed the way we develop software

Paulo Caroli Agile Coach

pcaroli@thoughtworks.com Twitter: @paulocaroli

CruiseControl: the open sourcethat changed the way we

develop software

Luiza Pagliari Developer

lpagliar@thoughtworks.com Twitter: @lpagliari

Agenda

Practice HistoryCruise

Control

Practice HistoryCruise

Control

Motivation

Traditionally, different modules are developed by different teams/developers

In XP, any programmer can change any part of the code

Definition

Continuous Integration is a software development practice where members of a team integrate their work frequently…

… each integration is verified by an automated build …

… detect integration errors as quickly as possible…

… assumes a high degree of tests.

Demonstration

Continuous Integration Server

Source Repository

Developers

Solution: continually integrate and test throughout the project

Developers check out code into their private workspaces

Developers work on functionality and validate it by running unit tests and local build

Developer update code to avoid conflicts

Developers work on existing conflicts and validate them by running tests and local build

When done, they commit changes to the repository

The CI server monitors the repository andchecks out changes when they occur

The CI server builds the system and runs automated tests

The CI server releases deployable artefacts

The CI server assigns a build label to the version of the code that it just built

The CI server informs the team of the successful build and generates useful metrics

If the build or tests fail, the CI server alerts the team

The team fix the issue at the earliest opportunity

Continually integrate and test throughout the project

Practice HistoryCruise

Control

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• C3 project• 4 Dev pairs (Kent, Martin, Ward…)• Smaltalk / Genstone• Manual Integration

– Integration server– Developer name on post-it– Red / Yellow / Green

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• C2 wiki• XP is being born

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• XP Explained book released• Project A

– Martin, Ward and TW– Java– Integration was a 2 week exercise

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

< Early 2000 >• Project A goes for XP

– 50 developers, many teams– Java / Star Team / before ant While (true) {

sleep upload? build test }

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

< Late 2000 >• Martin’s CI article• Project B • Repeat the CI automated idea• CruiseControl is born

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• Project C, D … X• Connectors to many repositories• Many contributors

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• CI practice really picking up• TW in a .Net project• CruiseControl.Net

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• TW in a Ruby project• CruiseControl.rb

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

• This talk about CruiseControl history• Many good options!• Next generation of tools

1996 … 1998 1999 2000 2001 2002 … 2006 … 2010

Practice HistoryCruise

Control

Build Loop

Build Report

Results Dashboard

Dashboard

Build Indicators

Directly on computer...

... Or outside it

... Or outside it

CruiseControl Cool stats

The oldest running CI build (August 2000)

• From 2006 to 2010• 74% green builds

Last 5 months: 41,000+ downloads

Countries O.S.

1. US 10,526

2. China 7,637

3. India 3,154

10.Brazil 678

600,000+ downloads(21.5 TB) since 2001

Paulo Caroli Agile Coach

pcaroli@thoughtworks.com Twitter: @paulocaroli

CruiseControl: the open sourcethat changed the way we

develop software

Luiza Pagliari Developer

lpagliar@thoughtworks.com Twitter: @lpagliari

Questions?Thank you!

References (Google it!)

• XP Explained by Kent Beck• Continuous Integration by Martin Fowler • Continuous Delivery by Jez Humble and David

Farley• CruiseControl by the community• Bubble, Bubble, Build's In Trouble (lava lamp)