Craig Berntson
Microsoft MVP since 1996 Magazine and book authoring Speaker at developer events across US and in Canada, Germany, and Czech Republic
Continuous Integration – Why and What Prerequisites Controlling Continuous Integration Testing Feedback Copyright , Craig Berntson. All rights reserved
It works on my machine When will you be done The database changed Stop shipping! We found a bug! Give me what you have so we can test Customer won’t accept – lots of bugs Code duplication Copyright , Craig Berntson. All rights reserved
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. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. – Martin Fowler ( Copyright , Craig Berntson. All rights reserved
“CI is the embodiment of tactics that gives us, as software developers, the ability to make changes in our code, knowing that if we break software, we’ll receive immediate feedback...[It is] the centerpiece of software development, as it ensures the health of software through running a build with every change.” – Paul Duvall, “Continuous Integration” Copyright , Craig Berntson. All rights reserved
Feedback Mechanism Commit Changes Build Script CI Server Integration Build Machine Version Control Repository Poll
Compile code Produce developer documentation Run unit tests and code metrics Call sophisticated external testing applications Produce an install set and burn to CD Copyright , Craig Berntson. All rights reserved
Reduce risks Reduce repetitive processes Generate deployable software Enable better project visibility Establish greater product confidence Copyright , Craig Berntson. All rights reserved
Increased overhead to maintain the CI system Too much change Additional hardware/software costs Developers should be performing these activities Copyright , Craig Berntson. All rights reserved
Commit code frequently Don’t commit broken code Fix broken builds immediately Write automated developer tests All tests and inspections must pass Run private builds (each developer runs tests on their own code) Avoid getting broken code (don’t check out broken code) Copyright , Craig Berntson. All rights reserved
Each developer should use the same folder structure Copyright , Craig Berntson. All rights reserved
Use source control! Telelogic Synergy CM Subversion SourceGear Vault Copyright , Craig Berntson. All rights reserved
You don’t need a high powered box to get started Separate box from source control server Copyright , Craig Berntson. All rights reserved
Everything that needs to be done to get the application out the door. Compiling Testing Creating install bits Copyright , Craig Berntson. All rights reserved
Incremental Daily Weekly Test Install Copyright , Craig Berntson. All rights reserved
Created by ThoughtWorks Four distinct parts CCNet.exe CCService.exe WebDashBoard CCTray CCNet.config Copyright , Craig Berntson. All rights reserved
NAnt MSBuild Math.sln Math.csproj Math.proj Copyright , Craig Berntson. All rights reserved
Visual Studio NUnit Copyright , Craig Berntson. All rights reserved
Configuring CruiseControl.NET Building the application with MS Build Automated testing with NUnit Copyright , Craig Berntson. All rights reserved
Coverage Duplicated code Fitness Refactoring Coding standards Copyright , Craig Berntson. All rights reserved
Sandcastle Copyright , Craig Berntson. All rights reserved
CCNet Web Dashboard CCTray Text messaging Sound Message Board Ambient Orb Copyright , Craig Berntson. All rights reserved
Apply XSLT to output Code coverage Duplicated code Refactoring Installshield Call automated QA test tools Copyright , Craig Berntson. All rights reserved
Continuous Integration – Why and What Source control and build box CruiseControl.Net MSBuild Nunit Additional testing, code metrics, documentation, etc. Feedback Copyright , Craig Berntson. All rights reserved
Web: Copyright , Craig Berntson. All rights reserved