Title: CI with CuiseControl'Net and Nant
1CI with CuiseControl.Net and Nant
- South Florida Enterprise and Strategy Architects
Special Interest Group (SF ESA SIG) - June 19, 2007
- Lawrence Port
- Otive LLC
- larry_at_otive.com
2What is Continuous Integration?
- Continuous Integration 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.
Martin Fowler
3An XP technique
- Pair programming
- Planning Game
- Test Driven Development
- Whole team
- Continuous Integration
- Design Improvement
- Small Releases
- Coding Standards
- Collective Code Ownership
- Simple Design
- System Metaphor
- Sustainable Pace
4Continuous Integration Scenario
- Developer checks out latest source code from
repository. - Developer makes changes (hopefully with TDD).
- Developer checks out latest source again to look
for conflicts. - With conflicts resolved, developer checks in
changes to repository. - CI system, detecting changes, checks out source
code on an integration server. - CI system builds.
- CI system runs automated tests.
Demo Alice
5Is CI just another unpracticed trend?
- Who in the room does CI?
- Nant and CruiseControl.Net widely used.
6Nant Overview
- Targets contain Tasks (think functions)
- Tasks perform actions
lttarget name"config"gt ltproperty
name"build.dir" value"CruiseControlDemoProject\b
in\Debug"/gt lt/targetgt lttarget
name"clean" depends"config"gt ltdelete
dir"build.dir"/gt ltmkdir
dir"build.dir"/gt lt/targetgt
Properties are variables
Targets may have dependencies
Demo basic file usage
7Important Nant Tasks
- Nunit
- Copy
- Mkdir, rmdir
- Foreach
- Zip, tar
- Functions exist as well
- Also ability to pass in parameters at command
line
Show Nant documentation
8CruiseControl.Net Overview
- Suite of apps for Continuous Integration
- CCNet Server
- CCNet Web Dashboard
- CCNet Tray
- Allows reporting via XSL.
Demo Start server, show web dash
9General CC.Net Flow
ccnet.exe
Source control
nant
nunit
fitnesse
fxcop
coverage
merge
xml result
xsl
10Important CCNet Config Elements
- Source Control
- Tasks
- Publishers
- Triggers
- Nant
- Merge
- Email
Demo ccnet.config
11More In-depth CI
- Working with Databases
- Distributed build scenarios
- Custom Nant tasks
- Custom CruiseControl.Net elements
Demo dashboard.config, ccnet.exe.config,
javascriptlocalizer,
12References
- CruiseControl.Net http//confluence.public.though
tworks.org/display/CCNET/WelcometoCruiseControl.
NET - Nant http//nant.sourceforge.net/
- Original CI article http//www.martinfowler.com/
articles/continuousIntegration.html