• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Continuous Integration
 

Continuous Integration

on

  • 2,787 views

Continuous Integration

Continuous Integration

Statistics

Views

Total Views
2,787
Views on SlideShare
2,783
Embed Views
4

Actions

Likes
0
Downloads
81
Comments
0

2 Embeds 4

http://www.slideshare.net 3
http://static.slidesharecdn.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Continuous Integration Continuous Integration Presentation Transcript

  •  
  • Continuous Integration Perficient China Joseph Wang [email_address]
  • Agenda
    • Warm Up
    • What’s CI
    • Benefits of CI – Why
    • When to implement CI
    • Who need to use CI
    • How to CI
    • Demo
  • Warm Up
    • Do no harm
    • Pay me now or pay me more later
    • Agile: Working software vs. comprehensive documents
  • Do no harm!
    • Hippocratic oath –
    • “ First, do no harm!”
  • Pay me now or pay me more later
  • Working software vs. comprehensive documents
  • What is CI
    • A development methodology
    • Of daily developer integrations
    • Verified by automated builds
  • 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
  • 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
  • Value of CI
    • To make things
    • Better
    • Faster
    • Cheaper
  • 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?
  • Faster
    • Test in parallel, not at the end
    • No integration points
    • Builds become a non event
  • Cheaper
    • Identify defects earlier
    • Fix when least costly
    • Easily repeatable testing
    • Reduce repetitive manual effort
  • When to implement CI When??? Implement early in the project
  • Who needs to use CI
    • Developer
    • Build master
    • QA
    • Project manager
    • Any others
  • How to Start
    • At least, daily checkin
    • Automated build script
    • A code repository
    • A dedicated CI server
    • Some rules
  • How to Start - Improve
    • Some more?
      • Code quality metric
      • Database integration
      • Document generation
      • Anything else?
  • 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
  • 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
  • Best practices - Continued
  • Good practices - Attention!
    • Good process vs. Passive attitude
      • CI will be useless if developers always ignore CI reports
  • 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
  • Demos – framework
    • Sonar for code quality
    • Hudson for CI
    • Subversion for code repository
  • Demo
    • Now, Show me the Demo!
    • Open Discussion
    • Send email to [email_address]
    • To join the CI google wave
  • 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/
  • Thanks