continuous integration, fast builds and flot
DESCRIPTION
Continuous Integration, Fast Builds And Flot, By Chris Bushell, February 3rd 2010TRANSCRIPT
Continuous Integration, Fast Builds and Flot
Chris Bushell - Melbourne Patterns Group February 3rd 2010
Traditional Software Development
• Waterfall• Development happens independently, in
parallel streams• Integration phase
Integration Is Painful
• Time consuming• Unpredictable
Typical Software Development
Continuous Integration
• Single source code repository• Automated build• Automated tests• Frequent commits
CI In Practice – Check OutTi
me
CI In Practice – Write CodeTi
me
CI In Practice – Run BuildTi
me
CI In Practice – CommitTi
me
CI In PracticeTi
me
CI In Practice – Continuous BuildTi
me
Encourage Frequent Check-Ins
• Integrating small changes is much less painful and time consuming than integrating large changes
Problem - Builds Can Become Slow
• More code = more tests = longer build time
A Fast Build Is Essential
• Idle developers• Context switching• Unable to deliver new features• I get bored easily
Monitoring Build Time
• Need to measure how long your build takes
Continuous Integration Server
• API allows us to access historic build time information
Flot
• Demo
Speeding Up A Slow Build
• Split code base
Speeding Up A Slow Build
• Hardware• SSD
Speeding Up A Slow Build
• Think about how to test• Unit tests are fast• Functional testing can be slow
Speeding Up A Slow Build
• Isolation from slow dependencies• Impersonator pattern
Speeding Up A Slow Build
• Parallelize build– Be careful with shared dependencies
Speeding Up A Slow Build
• Choose a light weight development container
Speeding Up A Slow Build
• Sam Newman’s Build Patterns– Check In Gate– Fish Eye Test Suite– Build Time Limit