You are on page 1of 10

CruiseControl as Continuous

Integration (CI) Tool

CruiseControl as CI tool in Helium Build System

Rev 1
AGENDA

• What is Continuous Integration?


• CruiseControl Overview
• CruiseControl Architecture
• Configure CruiseControl
• Helium / CruiseControl Build Flow
• Install and Run CruiseControl package Build
• Hudson Vs CruiseControl Comparison chart
• Hudson Advantages

Rev 2
What is Continuous Integration(CI)?

Continuous Integration (CI)is a software development practice where members


of a team integrate their work frequently, usually each person integrates at least
daily - leading to multiple integrations per day. Each integration is verified by an
automated build (including test) to detect integration errors as quickly as
possible. This approach leads to significantly reduced integration problems and
allows a team to develop cohesive software more rapidly.
-Martin Fowler

Rev 3
CruiseControl Overview
CruiseContol is JAVA based
• Continuous Integration Platform
• Apache-Licensed Open-Source Project
• Designed for Extension
• Fully matured framework for scheduling integration tasks and reporting their
results.
• CruiseControl is composed of 3 main modules:

• Build loop: core of the system, it triggers build cycles then notifies various
listeners (users) using various publishing techniques. The trigger can be
internal (scheduled or upon changes in a SCM) or external. It is configured
in a xml file which maps the build cycles to certain tasks, thanks to a
system of plugins. Depending on configuration, it may produce build
artifacts.

• jsp reporting application allows the users to browse the results of the builds
and access the artifacts

• Dashboard provides a visual representation of all project build statuses.

Rev 4
CruiseControl Architecture

Rev 5
Configuring CruiseControl

• CruiseControl configuration files are written in XML. The <cruisecontrol>


element is the root element of the configuration, and acts as a container to
the rest of the configuration elements.
• At a minimum, though, the config file contains a single top level
<cruisecontrol> element, with one or more child <project> elements

Rev 6
Helium /CruiseControl Build Flow
• Symbian Foundation(SF) distributes CI tool CruiseControl as part of PDT Kit
• CruiseControl Should be configured to run Scheduled SF Package /
Platform build using Helium build Framework
• CruiseControl Configuration file(XML) to run package or platform build not
available from SF

CruiseControl
config.xml file
Helium builds
the package

Rev 7
Install & Run CruiseControl package build

• CruiseControl is available as part of PDT installation @


C:\Symbian\Tools\PDT_1.0\helium\external\CruiseControl

• Run \Tools\PDT_1.0\helium\external\CruiseControl\Cruisecontrol.bat to
configure CruiseControl build server.

• Edit Config.xml found in \Tools\PDT_1.0\helium\external\CruiseControl


directory with details on project, SCM Repo, build schedule interval , build
log and binaries path etc

• http://localhost:8080/cruisecontrol/ to open JSP project reporting


application

• http://localhost:8080/dashboard/tab/dashboard for Build status dashboard


Note: Check if JAVA_HOME environment variable is set and points to JDK
install directory and Apache web server is running.

Rev 8
Hudson Vs CruiseControl
CruiseControl Vs Hudson Feature Comparison
Feature CruiseControl Hudson Feature CruiseControl Hudson

SCM Support Security

clearcase Yes Yes User authorization schemes No Yes


git Yes Yes LDAP Integration No Yes
Mercurial Yes Yes
CM Synergy Yes No Publishing
MKS Yes No
Email Yes Yes
SCM related support Formatted Logging Yes No

SCM Filtering Yes No Web Interface


Multi-SCM Yes No
can create new Repositories No No View changesets Yes Yes
Delete projects No Yes
Build management Modify projects No Yes
Kill builds Yes Yes
Parallel builds (ability to build several
projects simultaneously) Yes Yes Pause builds Yes No
Distributed builds Yes Yes Access to build artifacts Yes Yes
Manually force builds Yes Yes Browse CI's working copy No Yes
SCM trigged builds Yes Yes Delete CI's working copy No Yes
Add/remove agent machines (for
Builds promotion No Yes distributed builds) No Yes
Interproject Dependencies No Yes
Builds deletion No Yes Directly supported build tools
Reproduce history builds No No
Detect new failing tests while build No Yes Ant Yes Yes
Maven Yes Yes
Issue & PM integrations Make No No
Nant Yes Yes
Bugzilla No Yes
ClearQuest No No Remote management API

Test Tool Integration REST No Yes


SOAP No No
JUnit result rendering Yes Yes JMX Yes Yes
NUnit result rendering No Yes
Installation and Configuration
IDE Integration
Windows installer Yes Yes
JRE, SCM
Eclipse Plugin Yes Yes Additional dependencies client JRE
VS 2005 Plugin No No Execution platform JVM JVM
Java +
anything
Ant/Mav
en/NAnt Any
Project platform (what it can build) can build language
Ant,
Preferred build tool Maven Any
Automatic configuration from build Only for
script No maven
Text file configuration XML XML

Rev 9
Hudson Advantages
• Large Number of Projects
Given a potentially larger number of build jobs, the 'view' feature of Hudson
is very useful. Related jobs are shown on one view page.

• Multiple JDKs
If more than one Java version is to be supported, CruiseControl is
awkward: it is necessary to set up more than one server instance, one for
each JDK. Hudson handles multiple JDKs within a single instance.

• Distributed Builds
Hudson can operate in master/slave mode, where a single master
installation provides the web portal and can optionally delegate builds to
one or more slave servers. The web UI hides the actual master/slave
operation from users so that only administrators need be concerned about
the parallelization. The main benefit is that increased build throughput can
be obtained
• Symbian Foundation using “Hudson” and given positive feedback.

Rev 10

You might also like