Using Continuous Integration to Ensure Project Health<br />Bart Lowe<br />Senior Consultant <br />
Continuous Integration<br />Continuous Integration is a software development practice where members of a team integrate th...
Continuous Integration<br />Source Control<br />Automated Builds<br />Self-Testing Builds<br />Automated Deployment<br />C...
Source Control<br />Developers should commit to the mainline frequently.<br />Ensures problems are found quickly when used...
Automatic Builds<br />Ensures that your build is documented & repeatable.<br />Tips<br />Build only from a full checkout o...
Self Testing Builds<br />Unit Testing<br />Test Driven Development <br />Failed Tests should cause the build to fail<br />...
Automatic Deployment<br />Deployments can be just as error prone as builds.<br />Strive for one click deployments.<br />Cr...
Continuous Integration Server<br />A Continuous Integration server brings it all together.<br />Automatically triggers a b...
Helpful Links<br />Cruise Control .Net<br />http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseContr...
Other Tools <br />Ndoc<br />Automatic class library documentation<br />http://ndoc.sourceforge.net/<br />Watir<br />Ruby b...
For Presentation Slides & Files Email<br />bart.lowe@decisionsource.com<br />
Using Continuous Integration To Ensure Project Health New
Upcoming SlideShare
Loading in …5
×

Using Continuous Integration To Ensure Project Health New

1,135 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,135
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Describe Continuous Integration as an example.
  • No Demos needed here.
  • Talk about build process at a high level before drilling into details.
  • Describe and showReference App functionality and architecture.Describe whatNant is.Walk through Nant Script through the compilation step.
  • Show Nunit GUIShow FxCop GUIWalk through Nunit and FxCop steps in build scriptDemonstrate what happens when a unit test fails.
  • Show Deployment script section of Build Script.Discuss process for deploying database scripts.Show resulting scripts
  • Show Cruise Control .netShow cctrayDemonstrate what happens when a build is triggered.
  • Using Continuous Integration To Ensure Project Health New

    1. 1. Using Continuous Integration to Ensure Project Health<br />Bart Lowe<br />Senior Consultant <br />
    2. 2. Continuous Integration<br />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.<br />--Martin Fowler<br />Contrary to popular belief, continuous integration is an attitude, not a tool.<br />--James Shore<br />
    3. 3. Continuous Integration<br />Source Control<br />Automated Builds<br />Self-Testing Builds<br />Automated Deployment<br />Continuous Integration Server<br />
    4. 4. Source Control<br />Developers should commit to the mainline frequently.<br />Ensures problems are found quickly when used in conjunction with self-testing builds.<br />Don’t commit changes that will break the build.<br />Developers should get the latest version and run a local test build before committing changes.<br />Store everything required to ship the product (including database scripts).<br />
    5. 5.
    6. 6. Automatic Builds<br />Ensures that your build is documented & repeatable.<br />Tips<br />Build only from a full checkout of source control.<br />Maintain a history of past builds.<br />Make it easy for everyone to get latest executables.<br />Broken builds should be fixed ASAP.<br />Number your builds.<br />Keep your builds fast.<br />Treat build scripts as code. <br />Use a build scripting tool such as Nant.<br />
    7. 7. Self Testing Builds<br />Unit Testing<br />Test Driven Development <br />Failed Tests should cause the build to fail<br />Tool: Nunit<br />Code Coverage Testing<br />Tests the how much of your code is exercised by your unit tests.<br />Tool: NCover<br />Code Analysis<br />Validates conformance to design guidelines.<br />Tool: FxCop<br />
    8. 8. Automatic Deployment<br />Deployments can be just as error prone as builds.<br />Strive for one click deployments.<br />Create a deployment script for each environment (Dev, QA, Production)<br />Include a rollback mechanism in your deployment<br />Create deployment scripts with every build.<br />
    9. 9. Continuous Integration Server<br />A Continuous Integration server brings it all together.<br />Automatically triggers a build when a developer checks in code.<br />Provides a communication center for your build. <br />Records what changes where made since the last build along with who made the changes.<br />Alerts team members when a build breaks<br />Allows you to see detailed test results<br />Provides build history reporting<br />
    10. 10. Helpful Links<br />Cruise Control .Net<br />http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET<br />Nant tasks<br /><ul><li>http://nant.sourceforge.net/release/0.85/help/tasks/</li></ul>FxCop<br />http://www.gotdotnet.com/Team/FxCop/<br />Nunit<br />http://www.nunit.org/<br />
    11. 11. Other Tools <br />Ndoc<br />Automatic class library documentation<br />http://ndoc.sourceforge.net/<br />Watir<br />Ruby based web application testing<br />http://wtr.rubyforge.org/<br />Fitnesse<br />Allows non-technical users to define acceptance tests<br />http://fitnesse.org/<br />Simian <br />Looks for duplication in large software code bases.<br />http://www.redhillconsulting.com.au/products/simian/<br />
    12. 12. For Presentation Slides & Files Email<br />bart.lowe@decisionsource.com<br />

    ×