Top Banner
Gain Confidence With Continuous Integration Twin Cities Code Camp Spring 2012 © 2012 Jenna Pederson All Rights Reserved
28
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Gain Confidence with Continuous Integration

Gain Confidence With Continuous IntegrationTwin Cities Code Camp

Spring 2012

© 2012 Jenna Pederson All Rights Reserved

Page 2: Gain Confidence with Continuous Integration

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

Page 3: Gain Confidence with Continuous Integration

Who Am I?

• Jenna Pederson

• Programmer-geek, developer coach

• Twitter: jennapederson

• Blog: www.jpedersonconsulting.com/blog

Page 4: Gain Confidence with Continuous Integration

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

Page 5: Gain Confidence with Continuous Integration

Why Should You Care?

Page 6: Gain Confidence with Continuous Integration

Reduce rework,

time, and cost

Image: 401K / http://www.flickr.com/photos/68751915@N05/

Page 7: Gain Confidence with Continuous Integration

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

Page 8: Gain Confidence with Continuous Integration

Find and fix bugs when it

is the cheapest

Image: Salvatore Vuono / FreeDigitalPhotos.net

Page 9: Gain Confidence with Continuous Integration

Immediate feedback on the system as a

whole

Page 10: Gain Confidence with Continuous Integration

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

Page 11: Gain Confidence with Continuous Integration

What do you need to do CI?

Page 12: Gain Confidence with Continuous Integration

Version Control(and frequent commits)

Page 13: Gain Confidence with Continuous Integration

Same Build Process for Every

Environment(even for developers)

Page 14: Gain Confidence with Continuous Integration

FeedbackImage: Grant Cochrane / FreeDigitalPhotos.net

Page 15: Gain Confidence with Continuous Integration

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

Page 16: Gain Confidence with Continuous Integration

Automated Test Suite

Page 17: Gain Confidence with Continuous Integration

What Else Can CI Give You?

Page 18: Gain Confidence with Continuous Integration

Automated Documentation

Page 19: Gain Confidence with Continuous Integration

Code Coverage & Other Metrics

Page 20: Gain Confidence with Continuous Integration

Automated Deployment

(and rollback)

Image: Bravo213 / http://www.flickr.com/photos/bravo213/

Page 21: Gain Confidence with Continuous Integration

Demo

Page 22: Gain Confidence with Continuous Integration

What About Continuous Delivery?

Page 23: Gain Confidence with Continuous Integration

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

Page 24: Gain Confidence with Continuous Integration

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

Page 25: Gain Confidence with Continuous Integration

Practices

• Build once

• Use the same process to deploy to your local dev machine as to prod

• Smoke test

• Deployment pipelines

Page 26: Gain Confidence with Continuous Integration

Questions?

Page 27: Gain Confidence with Continuous Integration

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

Page 28: Gain Confidence with Continuous Integration

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