A presentation at Twin Cities Code Camp in in Minneapolis, MN, USA by Jenna Pederson
Gain Confidence With Continuous Integration Twin Cities Code Camp Spring 2012 © 2012 Jenna Pederson All Rights Reserved
Agenda • Who Am I? • What is Continuous Integration? • Why Should You Care? • What Do You Need to Do CI? • What Else Can CI Do? • Demo • What About Continuous Delivery? • Questions
Who Am I? • Jenna Pederson • Programmer-geek, developer coach • Twitter: jennapederson • Blog: www.jpedersonconsulting.com/ blog
What is Continuous Integration? “Continuous Integration is 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 Fowler
Why Should You Care?
Reduce rework, time, and cost Image: 401K / http://www.flickr.com/photos/68751915@N05/
Image: Genista / http://www.flickr.com/photos/genista/ Always have working software
Find and fix bugs when it is the cheapest Image: Salvatore Vuono / FreeDigitalPhotos.net
Immediate feedback on the system as a whole
Image: woodleywonderworks / http://www.flickr.com/photos/wwworks/ Less complex, more modular code
What do you need to do CI?
Version Control (and frequent commits)
Same Build Process for Every Environment (even for developers)
Image: Grant Cochrane / FreeDigitalPhotos.net Feedback
Image: Loco Steve / http://www.flickr.com/photos/locosteve/ Quick Response
Automated Test Suite
What Else Can CI Give You?
Automated Documentation
Code Coverage & Other Metrics
Automated Deployment (and rollback) Image: Bravo213 / http://www.flickr.com/photos/bravo213/
Demo
What About Continuous Delivery?
What is Continuous Delivery? “… about putting the release schedule in the hands of the business, not in the hands of IT. Implementing continuous delivery means making sure your software is always production ready throughout its entire lifecycle – that any build could potentially be released to users at the touch of a button using a fully automated process in a matter of seconds or minutes.” — Jez Humble
Principles • Repeatable • Automate • Painful? Do it more! • Use Source Control for EVERYTHING • Done: Sushi Done vs. Chicken Done • Quality Metrics • Everyone is responsible for releasing • Continuous Improvement
Practices • Build once • Use the same process to deploy to your local dev machine as to prod • Smoke test • Deployment pipelines
Questions?
Resources • Continuous Integration by Paul Duvall - http://bit.ly/AysbsP • Continuous Delivery by Jez Humble & David Farley - http://bit.ly/ zLMFCI • Integrate Often - http://bit.ly/wahTyf • Continuous Integration Anti-patterns - http://ibm.co/zY29l2 • Martin Fowler Continous Integration - http://bit.ly/y96P86 and http://bit.ly/zQKVo8 • Jenkins CI - http://jenkins-ci.org/ • CI and Testing: Mere Child’s Play - http://bit.ly/HI1tVF • 8 Principles of Continuous Delivery - http://bit.ly/HG44tX
Thank You! Twitter: @jennapederson Blog: www.jpedersonconsulting.com/blog