120 likes | 381 Views
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 larry@otive.com. What is Continuous Integration?.
E N D
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 larry@otive.com
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 • 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 <targetname="config"> <propertyname="build.dir" value="CruiseControlDemoProject\bin\Debug"/> </target> <targetname="clean" depends="config"> <deletedir="${build.dir}"/> <mkdirdir="${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 ccnet.exe Source control nant nunit fitnesse fxcop coverage merge xml result xsl
Important CCNetConfig 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