Gain Confidence with Continuous Integration

A presentation at Twin Cities Code Camp in April 2012 in Minneapolis, MN, USA by Jenna Pederson

Slide 1

Slide 1

Gain Confidence With Continuous Integration Twin Cities Code Camp Spring 2012 © 2012 Jenna Pederson All Rights Reserved

Slide 2

Slide 2

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

Slide 3

Slide 3

Who Am I? • Jenna Pederson • Programmer-geek, developer coach • Twitter: jennapederson • Blog: www.jpedersonconsulting.com/ blog

Slide 4

Slide 4

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

Slide 5

Slide 5

Why Should You Care?

Slide 6

Slide 6

Reduce rework, time, and cost Image: 401K / http://www.flickr.com/photos/68751915@N05/

Slide 7

Slide 7

Image: Genista / http://www.flickr.com/photos/genista/ Always have working software

Slide 8

Slide 8

Find and fix bugs when it is the cheapest Image: Salvatore Vuono / FreeDigitalPhotos.net

Slide 9

Slide 9

Immediate feedback on the system as a whole

Slide 10

Slide 10

Image: woodleywonderworks / http://www.flickr.com/photos/wwworks/ Less complex, more modular code

Slide 11

Slide 11

What do you need to do CI?

Slide 12

Slide 12

Version Control (and frequent commits)

Slide 13

Slide 13

Same Build Process for Every Environment (even for developers)

Slide 14

Slide 14

Image: Grant Cochrane / FreeDigitalPhotos.net Feedback

Slide 15

Slide 15

Image: Loco Steve / http://www.flickr.com/photos/locosteve/ Quick Response

Slide 16

Slide 16

Automated Test Suite

Slide 17

Slide 17

What Else Can CI Give You?

Slide 18

Slide 18

Automated Documentation

Slide 19

Slide 19

Code Coverage & Other Metrics

Slide 20

Slide 20

Automated Deployment (and rollback) Image: Bravo213 / http://www.flickr.com/photos/bravo213/

Slide 21

Slide 21

Demo

Slide 22

Slide 22

What About Continuous Delivery?

Slide 23

Slide 23

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

Slide 24

Slide 24

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

Slide 25

Slide 25

Practices • Build once • Use the same process to deploy to your local dev machine as to prod • Smoke test • Deployment pipelines

Slide 26

Slide 26

Questions?

Slide 27

Slide 27

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

Slide 28

Slide 28

Thank You! Twitter: @jennapederson Blog: www.jpedersonconsulting.com/blog