Continous integration-leon-kehl-2010

download Continous integration-leon-kehl-2010

of 35

  • date post

    04-Dec-2014
  • Category

    Documents

  • view

    656
  • download

    0

Embed Size (px)

description

 

Transcript of Continous integration-leon-kehl-2010

  • 1. Waterloo Agile Lean P2P Group Continuous Integration If it is so great why can't we make it work here? Leon Kehl February 16, 2010 Waterloo Ontario
  • 2. Agenda
    • What is Continuous Integration and its History?
    • Demonstration of Continuous Integration Technology
    • Continuous Integration & Lean Production
    • People and the Laws of Physics
    • Continuous Integration Case Study
  • 3. Martin Fowler's Definition
    • 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.
  • 4. History
    • May date to the 60's when the IBM 360 team rebuilt the code base four times a day.
    • Continuous integration was one of the practises of the C3 team which included Kent Beck in 1996 that introduced Extreme Programming.
    • Martin Fowler wrote an article in 2000 which included the following: The tests are integrated into a continuous integration and build process which yields a highly stable platform for future development.
    • CruiseControl 1.0 was released in March 2001.
  • 5. Recommended practices
    • Maintain a code repository
    • Automate the build
    • Make the build self-testing
    • Everyone commits every day
    • Every commit (to mainline) should be built
    • Keep the build fast
    • Test in a clone of the production environment
    • Make it easy to get the latest deliverables
    • Everyone can see the results of the latest build
    • Automate deployment
  • 6. Today
    • Wikipedia lists 35+ applications.
    • Originally written in Java, Cruisecontrol has been ported to .NET and Ruby and there is now a commercial version.
    • Most are open source like Cruise Control but a number of commercial versions exist.
    • CruiseControl driven primarily by a config.xml file, others more graphical
  • 7. Quick Demonstration of CruiseControl
    • Downloaded from http://cruisecontrol.sourceforge.net/download.html
    • Bundled with versions of Jetty and Ant
    • Just unzip and run
    • Controlled through config.xml file
    • Granddaddy of tools, but easy to install and maintain. Newer applications easier to configure with more bells and whistles
  • 8.
  • 9.
  • 10. Features
    • Monitors source repository for changes
    • Builds based on changes or time based
    • Automated build and test
    • Emails success/failure
    • Maintains history of builds
    • Provides web interface to system
  • 11.
    • Advantages
    • Easy to revert if bug encountered
    • Detecting integration problems
    • Early warning for broken code
    • Immediate unit testing
    • Working version constantly available
    • Focus developers on developing functional, quality code
    • Disadvantages
    • Initial setup time required
    • Well-developed test-suite required for best utility
  • 12. So what's the problem?
  • 13. What are the goals of a typical software build process?
  • 14. What are the goals of a typical software build process?
    • Deliver a controlled build of the product to the user or testers
    • Identify changes from previous versions for updates
    • Traceability back to source code versions
    • May include regular nightly builds to ensure product can be delivered
  • 15. What are the goals of a typical software build process?
    • Deliver a controlled build of the product to the user or testers
    • Identify changes from previous versions for updates
    • Traceability back to source code versions
    • May include regular nightly builds to ensure product can be delivered
    • Focus is typically on delivering final build to customer, not on supporting the development of product or on interim quality standards
  • 16. Is Continuous Integration Equivalent to Kanban?
  • 17. What lies beneath the water?
  • 18. Software - Laws of Physics
    • Inertia is the resistance of any physical object to a change in its state of motion.
    • For software systems; as a system is modified, its disorder, or entropy, always increases. This is known as software entropy
  • 19. Example application of CI
    • Existing legacy check processing application ported to Windows combined with another legacy application
    • Unit tests meant updating a 100 page Word document with a manual test for feature
    • Testing changes involved going to test lab and running checks with physical hardware, setup could take an hour or longer
    • Severe case of Software Entropy
    • Significant problems in field, fixing issues and adding support for high speed transports
    • Similar situation to C3 project
  • 20. Greenfield redevelopment
    • Able to utilize Agile methodologies, part of selling redevelopment to management
    • Incorporated continuous integration from day 1
    • Build system, unit testing etc. were never separate deliverables but part of the process.
    • Continuous integration included automated build, unit tests, integration tests and ran in under 5 minutes
    • Nightly builds included documentation, code coverage and were added midproject
  • 21. Successful application of CI
    • Metaphor for project was eating an elephant in this case 110,000 lines of legacy code
    • Version delivered for acceptance testing after 8 months
    • Fairly long acceptance testing and rollout
    • Approaches and techniques were applied in limited situations elsewhere
  • 22. Continued support for Agile
    • Senior leadership supportive of Agile, created a Build committee to improve build processes
    • Several other teams were also working on continuous integration using variety of tools
    • Support for application transitioned from contract resources to all full-time for this project
    • Agile consulting firm was engaged to analyze current processes
  • 23. Manifesto for Agile Software Developmen