CruiseControl - An Introduction
Siegfried Goeschl
This work is licensed under a Creative Commons Attribution - Share Alike 2.5 License.
Agenda
- Continuous Integration
- Benefits of Continuous Integration
- Success Factors
- Successful Build Defined
- CruiseControl
- What is CruiseControl?
- How Does CruiseControl Work?
- CruiseControl Demonstration
- Summary
- Questions
Benefits of Continuous Integration
- Removes integration sessions
- Minimizes number of integration bugs
- If you build and test your software once an hour, no problem is more
than an hour old.
- Improves team work
- Delivers latest best build product
- Reduces the overall development cost by:
- making it easier to find and fix problems
- provides valuable and timely information, letting the development be
managed more tightly.
http://www.youtube.com/watch?v=XV5fViOoV_8
Success Factors
- Single source code repository
- Automated build scripts
- Automated tests
- Developers' discipline
- Synchronise often
- Don't break the build
- When you break the build, fix it.
Successful Build Defined
- All the latest sources are checked out of version control
- Every file is compiled from scratch
- The resulting files are linked and deployed for execution
- Suite of tests is run against the system
- If every test passes, then there is a successful build
Agenda
- Continuous Integration
- Benefits of Continuous Integration
- Success Factors
- Successful Build Defined
- CruiseControl
- What is CruiseControl?
- How Does CruiseControl Work?
- CruiseControl Demonstration
- Summary
- Questions
What is CruiseControl? (Part 1)
- Free and open source build scheduler
- Consists of two applications
- Build loop (runs as a service/daemon)
- Results reporting web application
- Works with many version control systems (CVS, PVCS, Subversion, ClearCase, ...)
- Works with any build tool that produces parseable output (Ant, Maven, ...)
What is CruiseControl? (Part 2)
- Cross platform (written in Java)
- Easily extensible:
- Configuration easily extended by custom plugins
- Well defined interfaces for version control systems, build tools and publishers
- Well supported:
- Complete reference documentation
- Active users mailing list
- Numerous tutorials
- "Pragmatic Project Automation" book by Mike Clark
How Does CruiseControl Work?
- Developer checks work into version control
- CC polls version control
- CC triggers a build
- CC captures logs and build artifacts
- Examples: jar, war, javadoc, unit test report, code coverage report,
code quality metrics
- CC publishes results
- Examples: send email, send instant message, turn on lava lamp
CruiseControl Start Page
CruiseControl Project Page
CruiseControl Change Log
CruiseControl Project Statistics
Agenda
- Continuous Integration
- Benefits of Continuous Integration
- Success Factors
- Successful Build Defined
- CruiseControl
- What is CruiseControl?
- How Does CruiseControl Work?
- CruiseControl Demonstration
- Summary
- Questions
Summary
- Nightly Builds is a best practice; Continuous Integration is better
- Automation reduces cost, improves feedback and leaves less room for manual
error
- CruiseControl enables Continuous Integration