Your SlideShare is downloading. ×
Continuous Integration
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Continuous Integration

2,432

Published on

Continuous Integration

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,432
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
87
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

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

    ×