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

More Related Content

What's hot

Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for BeginnersYüce Çelikel
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deploymentMartijn van der Kamp
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integrationtwuniversity
 
Simple Continous Integration
Simple Continous IntegrationSimple Continous Integration
Simple Continous IntegrationRicky Martaputra
 
WSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guidehugo lu
 
Devops for easy use
Devops for easy useDevops for easy use
Devops for easy useRitesh Gupta
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integrationdrluckyspin
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio worldCodecamp Romania
 
Continuous Integration - What even is it?
Continuous Integration - What even is it?Continuous Integration - What even is it?
Continuous Integration - What even is it?Rob Jacoby
 
Intro to CI/CD using Docker
Intro to CI/CD using DockerIntro to CI/CD using Docker
Intro to CI/CD using DockerMichael Irwin
 
Integration Testing as Validation and Monitoring
 Integration Testing as Validation and Monitoring Integration Testing as Validation and Monitoring
Integration Testing as Validation and MonitoringMelissa Benua
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Binary Studio
 
Continous integration with jenkins
Continous integration with jenkinsContinous integration with jenkins
Continous integration with jenkinsvodQA
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitisSteve Povilaitis
 
Intro to Continuous Integration
Intro to Continuous IntegrationIntro to Continuous Integration
Intro to Continuous IntegrationTal Mor (Moshayov)
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous IntegrationSomkiat Puisungnoen
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case StudyIndicThreads
 

What's hot (20)

Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for Beginners
 
Continuous integration, delivery & deployment
Continuous integration,  delivery & deploymentContinuous integration,  delivery & deployment
Continuous integration, delivery & deployment
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Simple Continous Integration
Simple Continous IntegrationSimple Continous Integration
Simple Continous Integration
 
WSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guide
 
Devops for easy use
Devops for easy useDevops for easy use
Devops for easy use
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio world
 
Continuous Integration - What even is it?
Continuous Integration - What even is it?Continuous Integration - What even is it?
Continuous Integration - What even is it?
 
Intro to CI/CD using Docker
Intro to CI/CD using DockerIntro to CI/CD using Docker
Intro to CI/CD using Docker
 
Integration Testing as Validation and Monitoring
 Integration Testing as Validation and Monitoring Integration Testing as Validation and Monitoring
Integration Testing as Validation and Monitoring
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
Continous integration with jenkins
Continous integration with jenkinsContinous integration with jenkins
Continous integration with jenkins
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Intro to Continuous Integration
Intro to Continuous IntegrationIntro to Continuous Integration
Intro to Continuous Integration
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
Continuous Integration: A Case Study
Continuous Integration: A Case StudyContinuous Integration: A Case Study
Continuous Integration: A Case Study
 

Similar to CI to Ensure Project Health

Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile ME
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationJoseph Wang
 
What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery Sarah Elson
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopWajih Aslam
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applicationsSunil Dalal
 
Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)Sergio Navarro Pino
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0Jasmine Conseil
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & DeploymentsShinu Suresh
 
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationDelivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationAspire Systems
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0Jasmine Conseil
 
Hudson
HudsonHudson
Hudson8x8
 
Continous integration
Continous integrationContinous integration
Continous integrationJeremy Wilken
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewSynopsys Software Integrity Group
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkinsVinay H G
 
continous integration and delivery
continous integration and deliverycontinous integration and delivery
continous integration and deliverySamarjeet Saurabh
 

Similar to CI to Ensure Project Health (20)

Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOpsAgile A to Z Chapter 4 Feedback Loop Part 2 DevOps
Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery What is Continuous Integration and Continuous Delivery
What is Continuous Integration and Continuous Delivery
 
Agile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loopAgile a to z chapter 4 feedback loop
Agile a to z chapter 4 feedback loop
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)Back to basic: continuous integration (Madrid DevOps)
Back to basic: continuous integration (Madrid DevOps)
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Continuous Integrations & Deployments
Continuous Integrations & DeploymentsContinuous Integrations & Deployments
Continuous Integrations & Deployments
 
Delivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous IntegrationDelivering Quality Software with Continuous Integration
Delivering Quality Software with Continuous Integration
 
Continuous integration with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Hudson
HudsonHudson
Hudson
 
Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration vs Continuous Delivery vs Continuous Deployment Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration vs Continuous Delivery vs Continuous Deployment
 
Continuous integration
Continuous integration Continuous integration
Continuous integration
 
Devops insights
Devops insightsDevops insights
Devops insights
 
Continous integration
Continous integrationContinous integration
Continous integration
 
Flight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An OverviewFlight East 2018 Presentation–Continuous Integration––An Overview
Flight East 2018 Presentation–Continuous Integration––An Overview
 
Continuous integration using jenkins
Continuous integration using jenkinsContinuous integration using jenkins
Continuous integration using jenkins
 
continous integration and delivery
continous integration and deliverycontinous integration and delivery
continous integration and delivery
 

CI to Ensure Project Health

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

Editor's Notes

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