CI with CuiseControl.Net and Nant

Download Report

Transcript CI with CuiseControl.Net and Nant

South Florida Enterprise and Strategy Architects
Special Interest Group (SF ESA SIG)
June 19, 2007
Lawrence Port
Otive LLC
[email protected]
What 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
An 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
Continuous Integration Scenario
1.
2.
3.
4.
5.
6.
7.
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
Is CI just another unpracticed trend?
 Who in the room does CI?
 Nant and CruiseControl.Net widely used.
Nant Overview
 Targets contain Tasks (think functions)
 Tasks perform actions
<target name="config">
<property name="build.dir" value="CruiseControlDemoProject\bin\Debug"/>
</target>
<target name="clean" depends="config">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}"/>
</target>
Properties are
variables
Targets may have
dependencies
Demo: basic file usage
Important 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
CruiseControl.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
General CC.Net Flow
Source control
nant
nunit
fitnesse
ccnet.exe
fxcop
coverage
merge
xsl
xml result
Important CCNet Config Elements
 Source Control
 Tasks
 Publishers
 Triggers
 Nant
 Merge
 Email
Demo: ccnet.config
More In-depth CI
 Working with Databases
 Distributed build scenarios
 Custom Nant tasks
 Custom CruiseControl.Net elements
Demo: dashboard.config, ccnet.exe.config,
javascriptlocalizer,
References
 CruiseControl.Net:
http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl
.NET
 Nant: http://nant.sourceforge.net/
 Original CI article: http://www.martinfowler.com/articles/continuousIntegration.html