Your SlideShare is downloading. ×
0
 
Continuous Integration Perficient China Joseph Wang [email_address]
Agenda <ul><li>Warm Up </li></ul><ul><li>What’s  CI </li></ul><ul><li>Benefits of CI –  Why </li></ul><ul><li>When  to imp...
Warm Up <ul><li>Do no harm </li></ul><ul><li>Pay me now or pay me more later </li></ul><ul><li>Agile: Working software vs....
Do no harm! <ul><li>Hippocratic oath –  </li></ul><ul><li>“ First, do no harm!” </li></ul>
Pay me now or pay me more later
Working software vs. comprehensive documents
What is CI <ul><li>A development methodology </li></ul><ul><li>Of daily developer integrations </li></ul><ul><li>Verified ...
What is CI <ul><ul><li>Is a software engineering  practice  in which  isolated changes  are  immediately  tested and repor...
Martin Flower's Rules for CI <ul><li>Maintain a single source repository. </li></ul><ul><li>Automate the build </li></ul><...
Value of CI <ul><li>To make things </li></ul><ul><li>Better </li></ul><ul><li>Faster  </li></ul><ul><li>Cheaper </li></ul>
Better <ul><ul><li>Better design </li></ul></ul><ul><ul><ul><li>Make sure the software is testable </li></ul></ul></ul><ul...
Faster <ul><li>Test in parallel, not at the end </li></ul><ul><li>No integration points </li></ul><ul><li>Builds become a ...
Cheaper <ul><li>Identify defects earlier </li></ul><ul><li>Fix when least costly </li></ul><ul><li>Easily repeatable testi...
When  to implement CI When??? Implement early in the project
Who needs to use CI <ul><li>Developer </li></ul><ul><li>Build master </li></ul><ul><li>QA </li></ul><ul><li>Project manage...
How to Start <ul><li>At least, daily checkin </li></ul><ul><li>Automated build script </li></ul><ul><li>A code repository ...
How to Start - Improve <ul><li>Some more? </li></ul><ul><ul><li>Code quality metric </li></ul></ul><ul><ul><li>Database in...
How to Start - Martin Flower's Rule for CI <ul><li>Maintain a single source repository. </li></ul><ul><li>Automate the bui...
Best practices <ul><li>Committing code frequently </li></ul><ul><ul><li>Check in code at least daily </li></ul></ul><ul><l...
Best practices - Continued
Good  practices - Attention! <ul><li>Good process vs. Passive attitude </li></ul><ul><ul><li>CI will be  useless  if devel...
Demos -- Hudson Features <ul><li>Easy installation  </li></ul><ul><ul><li>Written in Java </li></ul></ul><ul><li>Easy conf...
Demos – framework  <ul><li>Sonar for code quality </li></ul><ul><li>Hudson for CI </li></ul><ul><li>Subversion for code re...
Demo <ul><li>Now, Show me the Demo! </li></ul>
<ul><li>Open Discussion </li></ul><ul><li>Send email to  [email_address] </li></ul><ul><li>To join the CI google wave </li...
References <ul><li>http://martinfowler.com/articles/continuousIntegration.html </li></ul><ul><li>Continuous Integration: I...
Thanks
Upcoming SlideShare
Loading in...5
×

Continuous Integration

2,486

Published on

Continuous Integration

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,486
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
87
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Transcript of "Continuous Integration"

    1. 2. Continuous Integration Perficient China Joseph Wang [email_address]
    2. 3. Agenda <ul><li>Warm Up </li></ul><ul><li>What’s CI </li></ul><ul><li>Benefits of CI – Why </li></ul><ul><li>When to implement CI </li></ul><ul><li>Who need to use CI </li></ul><ul><li>How to CI </li></ul><ul><li>Demo </li></ul>
    3. 4. Warm Up <ul><li>Do no harm </li></ul><ul><li>Pay me now or pay me more later </li></ul><ul><li>Agile: Working software vs. comprehensive documents </li></ul>
    4. 5. Do no harm! <ul><li>Hippocratic oath – </li></ul><ul><li>“ First, do no harm!” </li></ul>
    5. 6. Pay me now or pay me more later
    6. 7. Working software vs. comprehensive documents
    7. 8. What is CI <ul><li>A development methodology </li></ul><ul><li>Of daily developer integrations </li></ul><ul><li>Verified by automated builds </li></ul>
    8. 9. What is CI <ul><ul><li>Is a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base . </li></ul></ul><ul><ul><li>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. -- Martin Flower </li></ul></ul>
    9. 10. Martin Flower's Rules for CI <ul><li>Maintain a single source repository. </li></ul><ul><li>Automate the build </li></ul><ul><li>Make your build self-testing </li></ul><ul><li>Everyone commits to the mainline every day </li></ul><ul><li>Every commit should build the mainline on an integration machine </li></ul><ul><li>Keep the build fast </li></ul><ul><li>Test in a clone of the production environment </li></ul><ul><li>Make it easy for anyone to get the latest executable </li></ul><ul><li>Everyone can see what's happening </li></ul><ul><li>Automate deployment </li></ul>
    10. 11. Value of CI <ul><li>To make things </li></ul><ul><li>Better </li></ul><ul><li>Faster </li></ul><ul><li>Cheaper </li></ul>
    11. 12. Better <ul><ul><li>Better design </li></ul></ul><ul><ul><ul><li>Make sure the software is testable </li></ul></ul></ul><ul><ul><li>Better quality </li></ul></ul><ul><ul><ul><li>That is tested early and often </li></ul></ul></ul><ul><ul><ul><li>Defects are detected and fixed sooner </li></ul></ul></ul><ul><ul><ul><li>Health of software is measurable </li></ul></ul></ul><ul><ul><ul><li>Always have a deployable software </li></ul></ul></ul><ul><ul><ul><li>That adheres to best practices </li></ul></ul></ul><ul><ul><ul><li>and coding standards </li></ul></ul></ul><ul><ul><ul><li>Greater software confidence </li></ul></ul></ul><ul><ul><li>Better project visibility </li></ul></ul><ul><ul><ul><li>“ What do you mean the tests are failing?” </li></ul></ul></ul><ul><ul><ul><li>“ What’s in version 1.2.3 of the build?” </li></ul></ul></ul><ul><ul><ul><li>“ What’s our code coverage now? </li></ul></ul></ul>
    12. 13. Faster <ul><li>Test in parallel, not at the end </li></ul><ul><li>No integration points </li></ul><ul><li>Builds become a non event </li></ul>
    13. 14. Cheaper <ul><li>Identify defects earlier </li></ul><ul><li>Fix when least costly </li></ul><ul><li>Easily repeatable testing </li></ul><ul><li>Reduce repetitive manual effort </li></ul>
    14. 15. When to implement CI When??? Implement early in the project
    15. 16. Who needs to use CI <ul><li>Developer </li></ul><ul><li>Build master </li></ul><ul><li>QA </li></ul><ul><li>Project manager </li></ul><ul><li>Any others </li></ul>
    16. 17. How to Start <ul><li>At least, daily checkin </li></ul><ul><li>Automated build script </li></ul><ul><li>A code repository </li></ul><ul><li>A dedicated CI server </li></ul><ul><li>Some rules </li></ul>
    17. 18. How to Start - Improve <ul><li>Some more? </li></ul><ul><ul><li>Code quality metric </li></ul></ul><ul><ul><li>Database integration </li></ul></ul><ul><ul><li>Document generation </li></ul></ul><ul><ul><li>Anything else? </li></ul></ul>
    18. 19. How to Start - Martin Flower's Rule for CI <ul><li>Maintain a single source repository. </li></ul><ul><li>Automate the build </li></ul><ul><li>Make your build self-testing </li></ul><ul><li>Everyone commits to the mainline every day </li></ul><ul><li>Every commit should build the mainline on an integration machine </li></ul><ul><li>Keep the build fast </li></ul><ul><li>Test in a clone of the production environment </li></ul><ul><li>Make it easy for anyone to get the latest executable </li></ul><ul><li>Everyone can see what's happening </li></ul><ul><li>Automate deployment </li></ul>
    19. 20. Best practices <ul><li>Committing code frequently </li></ul><ul><ul><li>Check in code at least daily </li></ul></ul><ul><li>Categorizing developer tests </li></ul><ul><li>Make the build faster </li></ul><ul><li>Using a dedicated integration build machine </li></ul><ul><ul><li>Cruise Control, Hudson </li></ul></ul><ul><ul><ul><li>Ant/xUnit/Maven/etc. </li></ul></ul></ul><ul><li>Using continuous feedback mechanisms (Email, SMS, etc) </li></ul><ul><li>Staging builds </li></ul>
    20. 21. Best practices - Continued
    21. 22. Good practices - Attention! <ul><li>Good process vs. Passive attitude </li></ul><ul><ul><li>CI will be useless if developers always ignore CI reports </li></ul></ul>
    22. 23. Demos -- Hudson Features <ul><li>Easy installation </li></ul><ul><ul><li>Written in Java </li></ul></ul><ul><li>Easy configuration </li></ul><ul><li>RSS/E-mail/IM integration </li></ul><ul><li>JUnit/TestNG test reporting </li></ul><ul><li>Distributed builds </li></ul><ul><li>File fingerprinting </li></ul><ul><li>Plug-in support </li></ul><ul><li>Trend diagram shows build results </li></ul>
    23. 24. Demos – framework <ul><li>Sonar for code quality </li></ul><ul><li>Hudson for CI </li></ul><ul><li>Subversion for code repository </li></ul>
    24. 25. Demo <ul><li>Now, Show me the Demo! </li></ul>
    25. 26. <ul><li>Open Discussion </li></ul><ul><li>Send email to [email_address] </li></ul><ul><li>To join the CI google wave </li></ul>
    26. 27. References <ul><li>http://martinfowler.com/articles/continuousIntegration.html </li></ul><ul><li>Continuous Integration: Improving Software Quality and Reducing Risk ---authored by Paul Duvall </li></ul><ul><li>http://www.integratebutton.com/index.html </li></ul><ul><li>Practices of an Agile Developer </li></ul><ul><li>https://hudson.dev.java.net/ </li></ul><ul><li>Appfuse: https://appfuse.dev.java.net </li></ul><ul><li>--Other stuff </li></ul><ul><li>http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson </li></ul><ul><li>http://hudson.gotdns.com/wiki/ </li></ul><ul><li>Using proxy: 128.2.223.63, port:3128 </li></ul><ul><li>JBOSS's hudson website: http://hudson.jboss.org/hudson/ </li></ul><ul><li>Lucene's hudson website: http://lucene.zones.apache.org:8080/hudson/ </li></ul><ul><li>http://www.selenic.com/mercurial/wiki/ </li></ul>
    27. 28. Thanks
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×