Successfully reported this slideshow.

Continuous Integration

32,144 views

Published on

Get the skinny on Continuous Integration. What to do and what NOT to do.

Published in: Business, Technology

Continuous Integration

  1. Continuous Integration Todd Papaioannou
  2. Or, how to build software better, faster, cheaper
  3. What??
  4. What is CI? a development methodology of daily developer integrations verified by automated builds
  5. What is it not? nightly builds developer branches scheduled Integration Points building via IDEs
  6. Continuous Compilation != Continuous Integration
  7. ‘Fraid Not!
  8. Why do it?
  9. Building software can be a risky business
  10. Risk 1: Fixing bugs late is costly Source: http://www.agitar.com/solutions/ why_unit_testing.html
  11. So why is most software built Requirements this way? Design Implementation Testing
  12. Risk 2: Lack of team cohesion “Your changes to Bar are incompatible with mine. How do we merge now?” “When did we decided to upgrade to version 2.0-alpha of the Super library??” “I thought you fixed that 2 months ago!”
  13. Risk 3: Poor quality code base “We have 3 classes doing the same thing??” “Everybody knows double checked locking is a Bad Idea!” “Why can’t I just include Foo and not require all of the other 13 libs?”
  14. Risk 4: Lack of project visibility “What do you mean the tests are failing?” “What’s in version 1.2.3 of the build?” “What’s our code coverage now?
  15. Risk 5: Lack of deployable software “It works on my machine!” “I need a new build to test with” “The [boss|customer|patron] is coming, we need to demo progress asap”
  16. Use Continuous Integration to reduce the risks
  17. Wait! Didn’t you say better, faster, cheaper?
  18. Better Build better quality software That is tested early and often That adheres to best practices and coding standards
  19. Faster Test in parallel, not at the end No integration points Builds become a non event
  20. Cheaper Identify defects earlier Fix when least costly Easily repeatable testing
  21. So what constitutes a build?
  22. Compilation != A Build
  23. Build Ingredients Compilation Test execution Database integration Code inspection Automated deployment Documentation generation
  24. Compilation Ensures code actually compiles On every target platform
  25. Test Execution Ensures product functions as expected Through repeatable testing
  26. DB Integration Ensures DB and code in sync Automates (re)creation of DB and test data
  27. Code Inspections Ensures a healthy code base Identifies problems early Enforces best practices
  28. Automated Deployment Products can be released anytime Continually demo-able state Eliminates “works on my machine”
  29. Documentation Generation Ensures documentation is current Removes burden from developers Produces build reports and metrics
  30. How do I get started?
  31. When do I build? At every check-in Every time a dependency changes
  32. Dependency Graphs Matter!
  33. How do I build? Use a single build script That can run from the cmdline Do not depend on an IDE
  34. Do it continuously Use a dedicated CI server, not cron Trigger on all daily check-ins Not [only] at midnight
  35. Pay attention to your builds Provide immediate feedback Make it easily accessible Require no developer effort
  36. Metrics Matter Identify key metrics and track them visually Act on them immediately
  37. The 7 step program
  38. Learn it, Use it!
  39. Step 1 Commit Early, Commit Often
  40. Step 2 Never commit broken code
  41. Step 3 Fix build failures immediately
  42. Step 4 Fail Fast
  43. Step 5 Act on metrics
  44. Step 6 Build in every target environment
  45. Step 7 Create artifacts from every build
  46. print me! 1. Commit Early, Commit Often 2. Never Commit Broken Code 3. Fix build failures immediately 4. Fail Fast 5. Act on metrics 6. Build in every target environment 7. Create artifacts from every build
  47. Summary
  48. Continuous Integration can help you build better quality software faster, with more confidence
  49. Start using it!
  50. The End
  51. Roll the Photo Credits http://www.flickr.com/photos/24263322@N05/2403969648/ http://www.flickr.com/photos/destinme/1267500829/ http://www.flickr.com/photos/legacyalive/891467616/ http://www.flickr.com/photos/tizianoj/1294103746/ http://www.flickr.com/photos/xeophin/2181342710/ http://www.flickr.com/photos/booddin/2190614236 http://www.flickr.com/photos/thomashawk/176219254 http://www.flickr.com/photos/7446536@N03/430561725 http://www.flickr.com/photos/gallerisager/471366272 http://www.flickr.com/photos/mccain007/2092664145

×