Continuous Integration: A Case Study


Published on

Session Presented at 2nd Conference On Software Quality held on 25-26 March 2011 in Pune, India

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Continuous Integration: A Case Study

  1. 1. Continuous Integration: A case study Vaibhav Kothari Talentica Software (I) Pvt ltd
  2. 2. Abstract <ul><ul><li>Developer’s dilemma </li></ul></ul><ul><ul><li>QA’s dilemma </li></ul></ul><ul><ul><li>Continuous Integration ? </li></ul></ul><ul><ul><li>Case study </li></ul></ul><ul><ul><li>What is accomplished ? </li></ul></ul><ul><ul><li>Benefits of CI </li></ul></ul><ul><ul><li>Recommended Practices </li></ul></ul><ul><ul><li>Other Tools Available </li></ul></ul><ul><ul><li>Q&A </li></ul></ul>
  3. 3. Developer’s dilemma <ul><ul><li>Will my changes integrate successfully with all versions of code? </li></ul></ul><ul><ul><li>How much time/effort it will take to build and deploy from different source repository branches? </li></ul></ul><ul><ul><li>Why can’t QA take this up!! </li></ul></ul>
  4. 4. QA’s dilemma <ul><ul><li>How much time/effort it will take to build and deploy from different source repository branches? </li></ul></ul><ul><ul><li>How much time/effort will it take test builds from different sources? </li></ul></ul><ul><ul><li>I can't build that often! </li></ul></ul>
  5. 5. Continuous Integration ?? <ul><ul><li>As wiki says </li></ul></ul><ul><ul><li>“ Continuous integration involves integrating early and often, so as to avoid the pitfalls of &quot; integration hell &quot;. The practice aims to reduce rework and thus reduce cost and time.” </li></ul></ul>
  6. 6. Continuous Integration….
  7. 7. Continuous Integration…. <ul><ul><li>Integrating the build process with continuous development. </li></ul></ul><ul><ul><li>Concurrent build preparation from different branches. </li></ul></ul><ul><ul><li>Integrating build system with deployment and test automation. </li></ul></ul><ul><ul><li>Monitoring build and test. </li></ul></ul>
  8. 8. CI in agile development
  9. 9. Case Study <ul><ul><li>Current Product development Lifecycle </li></ul></ul>
  10. 10. Case Study <ul><ul><li>Where does integration server stands ? </li></ul></ul>
  11. 11. <ul><li>Features to look out for </li></ul><ul><ul><li>Basic Continuous Integration </li></ul></ul><ul><ul><li>Build Triggering options </li></ul></ul><ul><ul><li>Support for tools </li></ul></ul><ul><ul><li>Set ups and usability </li></ul></ul><ul><ul><li>Build logs and metrics </li></ul></ul><ul><ul><li>Notifications </li></ul></ul><ul><ul><li>Plugins, Extensions </li></ul></ul>Case Study
  12. 12. <ul><li>Hudson CI </li></ul><ul><ul><li>Open source tool available as deployable war file. </li></ul></ul><ul><ul><li>Each build and deployment process can be set up as a separate project and run concurrently or subsequently. </li></ul></ul><ul><ul><li>Supports distributed builds </li></ul></ul><ul><ul><li>The most used CI server in an informal developer survey! </li></ul></ul>Case Study
  13. 13. Case Study <ul><ul><li>Tools to be Integrated </li></ul></ul>Windows XP/Linux OS Selenium RC Test Automation Apache Tomcat 6.0 Web server Apache Ant Build Tool Sub version Version control Hudson CI Continuous Integration
  14. 14. Case Study… Setting up a build Job
  15. 15. Case Study….. Defining build triggers
  16. 16. <ul><li>Post build tasks </li></ul><ul><ul><li>Automate build and deployment process and server restart. </li></ul></ul><ul><ul><li>Integrate Hudson with test automation suite </li></ul></ul><ul><ul><li>Remote deployment of multiple builds and test suite invocation </li></ul></ul>Case Study
  17. 17. Case Study… Post build tasks
  18. 18. <ul><li>Distributed Builds </li></ul><ul><ul><li>Build distribution using Single Hudson installation. </li></ul></ul><ul><ul><li>Single click using Master/Slave mode. </li></ul></ul><ul><ul><li>Concurrency in largely distributed projects. </li></ul></ul>Case Study
  19. 19. Case Study… Building Remotely
  20. 20. Case Study… Slave set up in Hudson
  21. 21. Case Study…. What’s achieved?
  22. 22. <ul><ul><li>Nobody minds it! Single click process. </li></ul></ul><ul><ul><li>Early identification of build issues. </li></ul></ul><ul><ul><li>Early identification of bugs. </li></ul></ul><ul><ul><li>Incremental development. </li></ul></ul><ul><ul><li>Constant availability of sane build. </li></ul></ul><ul><ul><li>Efficient use of Test Automation. </li></ul></ul><ul><ul><li>More time for Quality improvement. </li></ul></ul>Benefits of CI
  23. 23. <ul><ul><li>Maintain a code repository </li></ul></ul><ul><ul><li>Automate the build and Deployment </li></ul></ul><ul><ul><li>Make your build self-testing </li></ul></ul><ul><ul><li>Everyone commits every day </li></ul></ul><ul><ul><li>Every commit (to mainline) should be built </li></ul></ul><ul><ul><li>Keep the build fast </li></ul></ul><ul><ul><li>Test in a clone of the production environment </li></ul></ul><ul><ul><li>Make it easy to get the latest deliverables </li></ul></ul><ul><ul><li>Everyone can see the results of the latest build </li></ul></ul>Recommended Practices
  24. 24. Other Tools Available Tools Advantages Limitations Cruise Control - Supports wide project and SCM tool. - Good notification techniques - Large number of plugins - Complicated set up - XML based configuration Continuum - Easy to install and use - Web Administrative console - Not suitable for big projects Luntbuild - Easy to install and use - Web Administrative console - Supports wide range of tools - Not support remote project build up TeamCity - Supports distributed build - Professional support (JetBrains) - Advanced options <ul><ul><li>Commercial tool (free for 10 projects) </li></ul></ul>Bamboo <ul><ul><li>Advanced distributed build options </li></ul></ul><ul><ul><li>Integrates with JIRA </li></ul></ul><ul><ul><li>Commercial tools </li></ul></ul>
  25. 25. Q&A