SlideShare a Scribd company logo
Continuous Integration
  The Minimum Viable Product
     Julian Simpson - @builddoctor
           Chris Read - @cread
http://www.flickr.com/photos/84889127@N00/5151115063/



Where’s Chris?
http://www.flickr.com/photos/brook/50700239/




Loom? Really?
http://www.flickr.com/photos/sarah_elizabeth_simpson/5923553033/
http://www.flickr.com/photos/krunkwerke/5304623530
http://www.flickr.com/photos/imlsdcc/5576596277/
http://www.flickr.com/photos/mainmanwalkin/3074193461/




mainline

                                             release
                                             branches
http://www.flickr.com/photos/redarrow101/1338479041/
CI Principles
CI Principles
• Build and test everything, when it changes
CI Principles
• Build and test everything, when it changes
• The database schema counts as everything
CI Principles
• Build and test everything, when it changes
• The database schema counts as everything
• Tests count as everything
CI Principles
• Build and test everything, when it changes
• The database schema counts as everything
• Tests count as everything
• And JavaScript
CI Principles
• Build and test everything, when it changes
• The database schema counts as everything
• Tests count as everything
• And JavaScript
• Check in often and early
CI Principles
• Build and test everything, when it changes
• The database schema counts as everything
• Tests count as everything
• And JavaScript
• Check in often and early
• Builds are feedback
Simple CI Demo
More build information
Databases
Databases

• Use database migrations
Databases

• Use database migrations
• Don’t write your own tool
Databases

• Use database migrations
• Don’t write your own tool
• Don’t mix DDL and DML
Databases

• Use database migrations
• Don’t write your own tool
• Don’t mix DDL and DML
• Data can cause migrations to fail in prod
1 class CreateTheGems < ActiveRecord::Migration
 2   def self.up
 3     create_table :the_gems do |t|
 4       t.string :name
 5       t.timestamps
 6     end
 7   end
 8
 9   def self.down
10     drop_table :the_gems
11   end
12 end
1 class AddGemStatus < ActiveRecord::Migration
2   def self.up
3     add_column :the_gems, :status, :string, :default => "pending"
## at least there are 3 values. pending, declined & approved
4   end
5
6   def self.down
7     remove_column :the_gems, :status
8   end
9 end
Notifications
Notifications

• Email is evil
Notifications

• Email is evil
• IDE or tray tools are OK
Notifications

• Email is evil
• IDE or tray tools are OK
• Big Visible tools are awesome
XFD Demo
Scaling
Scaling

• Solid State Disks are your friend
Scaling

• Solid State Disks are your friend
• Scaling tests is a different concern: http://
  test-load-balancer.github.com/
Scaling

• Solid State Disks are your friend
• Scaling tests is a different concern: http://
  test-load-balancer.github.com/
• Don’t fake infrastructure to make it fast
Testing the Web
Testing the Web

• You can make your application easier to
  test
Testing the Web

• You can make your application easier to
  test
• Don’t forget to test everything
Testing the Web

• You can make your application easier to
  test
• Don’t forget to test everything
• Be damn careful when you parallelize tests
If you can’t test them,
     validate them
Though testing is
    better
GUI



  Acceptance



Unit/Integration
Sauce Labs Demo
Continuous Integration, the minimum viable product
DevOps




http://www.flickr.com/photos/shaggypaul/193098324/
DevOps

• most misunderstood meme of recent times




         http://www.flickr.com/photos/shaggypaul/193098324/
DevOps

• most misunderstood meme of recent times
• agile approach to systems admin



         http://www.flickr.com/photos/shaggypaul/193098324/
DevOps

• most misunderstood meme of recent times
• agile approach to systems admin
• developer-sysadmin collaboration


         http://www.flickr.com/photos/shaggypaul/193098324/
DevOps

• most misunderstood meme of recent times
• agile approach to systems admin
• developer-sysadmin collaboration
• provides feedback to the business

         http://www.flickr.com/photos/shaggypaul/193098324/
Production
Production

• Deployment scripts should be rehearsed in
  CI
Production

• Deployment scripts should be rehearsed in
  CI
• CI servers should be built the same way as
  prod
Production

• Deployment scripts should be rehearsed in
  CI
• CI servers should be built the same way as
  prod
• Tools like Puppet and Chef help you do
  that
Puppet Demo
New server: 45 seconds
knox:infrastructure jsimpson$
rake puppet:remote
bundle exec lib/instance.rb
Node ready at 44.457065
bootstrapping at 44.457127
setting the ssh hostkey at 44.457141
copying the code over at 44.828861
about to make code dir at 44.828986
About to rsync at 45.731777
Slowest part? My ISP
Rsync done at 327.996322
bootstrapping rubygems at 327.997617

updating system config
Extracting templates from packages: 100%
Successfully installed bundler-1.0.15
1 gem installed
Building native extensions. This could
take a while...
Successfully installed json-1.5.3
1 gem installed

bootstrapped rubygems at 366.733525
bootstrapping at 366.733569
bootstrapped at 366.733608
bootstrapped at 373.198161
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
Continuous
Deployment
http://www.flickr.com/photos/rsgranne/179321532/




Continuous Delivery

 ... satisfy the customer through early
 and continuous delivery of
 valuable software ... (ask Jez)
Further reading
Thank you

     Any Questions?
      @builddoctor
julian@build-doctor.com

More Related Content

PDF
Continuous Integration at T3CON08
ZIP
Introduction To Continuous Integration
PDF
Continuous Integration 101
ZIP
Continuous Integration, Build Pipelines and Continuous Deployment
PDF
Continuous integration
PDF
Improving software quality using Continuous Integration
PPT
Continuous integration
PDF
Continuous Integration (CI) - An effective development practice
Continuous Integration at T3CON08
Introduction To Continuous Integration
Continuous Integration 101
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous integration
Improving software quality using Continuous Integration
Continuous integration
Continuous Integration (CI) - An effective development practice

What's hot (20)

PPTX
Continous integration with jenkins
PPTX
Continuous integration
PPTX
Continuous delivery applied
PDF
WSO2 IoTS Device Manufacturer Guide
PDF
Usg Web Tech Day 2016 - Continuous Integration, Deployment, and Delivery
PDF
Simple Continous Integration
PDF
Continuous Deployment: Beyond Continuous Delivery
PPTX
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
PPTX
The Hard Problems of Continuous Deployment
PPT
CI and CD with Jenkins
PPTX
Integration Testing as Validation and Monitoring
PDF
PPTX
Continuous integration, delivery & deployment
PPT
Continuous Integration and Builds
PDF
Continuous Integration: How I stopped guessing if that merge was bad
PPT
Continous Integration: A Case Study
ODP
Continous integration
PPTX
Continuous Delivery with TFS msbuild msdeploy
PDF
Continuous delivery of your legacy application
PDF
Introduction to Continuous Integration
Continous integration with jenkins
Continuous integration
Continuous delivery applied
WSO2 IoTS Device Manufacturer Guide
Usg Web Tech Day 2016 - Continuous Integration, Deployment, and Delivery
Simple Continous Integration
Continuous Deployment: Beyond Continuous Delivery
Keeping Your CI/CD Pipeline as Fast as It Needs to Be
The Hard Problems of Continuous Deployment
CI and CD with Jenkins
Integration Testing as Validation and Monitoring
Continuous integration, delivery & deployment
Continuous Integration and Builds
Continuous Integration: How I stopped guessing if that merge was bad
Continous Integration: A Case Study
Continous integration
Continuous Delivery with TFS msbuild msdeploy
Continuous delivery of your legacy application
Introduction to Continuous Integration
Ad

Viewers also liked (20)

PDF
Continuous Deployment - Lean LA
PPT
Continuous Integration (Jenkins/Hudson)
PPTX
CI in the mobile world
PPTX
Enterprise level cloud CI
PDF
Mardi Gras 'Intégration Continue'
PDF
TIAD : Automating the aplication lifecycle
PDF
An almost complete continuous delivery pipeline including configuration manag...
PDF
Continuous Delivery Pipeline - Patterns and Anti-patterns
PDF
Ci tools Introduce
PPTX
Continous delivery
PPTX
L&rsquo;intégration continue chez AXA France
PPTX
Présentation kanban
POT
Fast deterministic screenshot tests for Android
PDF
A Whirlwind Tour of Test::Class
PPTX
(Seleniumcamp) Selenium RC for QA Engineer
PDF
Selenium for Designers
PDF
Core Principles Of Ci
PPTX
Etat de l art business intelligence
PDF
Selenium Page Objects101
PDF
Tips for better CI on Android
Continuous Deployment - Lean LA
Continuous Integration (Jenkins/Hudson)
CI in the mobile world
Enterprise level cloud CI
Mardi Gras 'Intégration Continue'
TIAD : Automating the aplication lifecycle
An almost complete continuous delivery pipeline including configuration manag...
Continuous Delivery Pipeline - Patterns and Anti-patterns
Ci tools Introduce
Continous delivery
L&rsquo;intégration continue chez AXA France
Présentation kanban
Fast deterministic screenshot tests for Android
A Whirlwind Tour of Test::Class
(Seleniumcamp) Selenium RC for QA Engineer
Selenium for Designers
Core Principles Of Ci
Etat de l art business intelligence
Selenium Page Objects101
Tips for better CI on Android
Ad

Similar to Continuous Integration, the minimum viable product (20)

PPTX
Strategies in continuous delivery
PPT
Making the Agile Leap to Continuous Deployment
PDF
Continuous Delivery: The Dirty Details
PPTX
Road to Continuous Delivery - Wix.com
PDF
An Infrastructure for Team Development - Gaylord Aulke
 
PDF
From dev to ops and beyond - getting it done
PDF
How Continuous Delivery Helps Retailers (Etail 2012)
PPTX
Developing apps faster
KEY
Ship It ! with Ruby/ Rails Ecosystem
PPT
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
PPT
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
PDF
Why your company loves to welcome change but sucks at accommodating it
PDF
Continuous Integration in NET Marcin Kawalerowicz
PPT
DevOps / Agile Tools Seminar 2013
PDF
Continuous Integration in NET Marcin Kawalerowicz 2024 Scribd Download
KEY
Continuous Deployment
PDF
DevOps: Automate all the things
PPTX
Continuous delivery applied (RJUG)
PPTX
Continuous delivery for databases
PDF
Continuous Testing
Strategies in continuous delivery
Making the Agile Leap to Continuous Deployment
Continuous Delivery: The Dirty Details
Road to Continuous Delivery - Wix.com
An Infrastructure for Team Development - Gaylord Aulke
 
From dev to ops and beyond - getting it done
How Continuous Delivery Helps Retailers (Etail 2012)
Developing apps faster
Ship It ! with Ruby/ Rails Ecosystem
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Why your company loves to welcome change but sucks at accommodating it
Continuous Integration in NET Marcin Kawalerowicz
DevOps / Agile Tools Seminar 2013
Continuous Integration in NET Marcin Kawalerowicz 2024 Scribd Download
Continuous Deployment
DevOps: Automate all the things
Continuous delivery applied (RJUG)
Continuous delivery for databases
Continuous Testing

More from Julian Simpson (7)

PDF
Surrounded by Graphs
PPT
Adventures in infrastructure as code
KEY
Everything I learned about Continuous Integration, I learned from Systems Adm...
ZIP
Silos are for farmers
PDF
Agile Systems Admin
ZIP
Ci From The Trenches
Surrounded by Graphs
Adventures in infrastructure as code
Everything I learned about Continuous Integration, I learned from Systems Adm...
Silos are for farmers
Agile Systems Admin
Ci From The Trenches

Recently uploaded (20)

PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
A Presentation on Artificial Intelligence
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Electronic commerce courselecture one. Pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Cloud computing and distributed systems.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Machine learning based COVID-19 study performance prediction
Review of recent advances in non-invasive hemoglobin estimation
A Presentation on Artificial Intelligence
Advanced methodologies resolving dimensionality complications for autism neur...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectral efficient network and resource selection model in 5G networks
CIFDAQ's Market Insight: SEC Turns Pro Crypto
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Dropbox Q2 2025 Financial Results & Investor Presentation
Electronic commerce courselecture one. Pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Cloud computing and distributed systems.
NewMind AI Weekly Chronicles - August'25 Week I
Network Security Unit 5.pdf for BCA BBA.
Mobile App Security Testing_ A Comprehensive Guide.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Continuous Integration, the minimum viable product

Editor's Notes

  • #2: Explain that chris is not an imaginary friend\nDo the experience check\nExplain the vagueness in pitching\nask them to ask questions\nexplai\n \n\n\n
  • #3: Explain Chris\nDo the experience check\nAsk for questions\nTake a deep fucking breath\n\n
  • #4: This is the existing metaphor for CI\n&amp;#x201C;Toyoda&amp;#x2019;s automatic loom stopped whenever the thread of the warp was snapped, .. the loom could not produce defectives, because it had an automatic stopping device&amp;#x201D;\nBut CI is not about machines, it&amp;#x2019;s about peopl;e\n
  • #5: \n
  • #6: This is CM done wrong\n
  • #7: Which leads to this\n
  • #8: it should be this\n
  • #9: The 1840&amp;#x2019;s called, they want your CI status back\n
  • #10: 1. CI Principles\nBuild everything, whenever it changes\nSingle Source of Truth\nthe database schema counts as everything\nthe tests count as everything\nCheck in frequently\nWe all build together (ie Branching is Bad!)\nFEEDBACK!\n\n
  • #11: 1. CI Principles\nBuild everything, whenever it changes\nSingle Source of Truth\nthe database schema counts as everything\nthe tests count as everything\nCheck in frequently\nWe all build together (ie Branching is Bad!)\nFEEDBACK!\n\n
  • #12: 1. CI Principles\nBuild everything, whenever it changes\nSingle Source of Truth\nthe database schema counts as everything\nthe tests count as everything\nCheck in frequently\nWe all build together (ie Branching is Bad!)\nFEEDBACK!\n\n
  • #13: 1. CI Principles\nBuild everything, whenever it changes\nSingle Source of Truth\nthe database schema counts as everything\nthe tests count as everything\nCheck in frequently\nWe all build together (ie Branching is Bad!)\nFEEDBACK!\n\n
  • #14: 1. CI Principles\nBuild everything, whenever it changes\nSingle Source of Truth\nthe database schema counts as everything\nthe tests count as everything\nCheck in frequently\nWe all build together (ie Branching is Bad!)\nFEEDBACK!\n\n
  • #15: 1. CI Principles\nBuild everything, whenever it changes\nSingle Source of Truth\nthe database schema counts as everything\nthe tests count as everything\nCheck in frequently\nWe all build together (ie Branching is Bad!)\nFEEDBACK!\n\n
  • #16: \n
  • #17: \n
  • #18: AR migrations, dbdeploy, dbdeploy.net, tarantino, dbmigrate, et al\nDML and DDL must never meet\nReference data may depend on a schema\ntest it realistically - test against a real dataset if you can\n\n \n\n
  • #19: AR migrations, dbdeploy, dbdeploy.net, tarantino, dbmigrate, et al\nDML and DDL must never meet\nReference data may depend on a schema\ntest it realistically - test against a real dataset if you can\n\n \n\n
  • #20: AR migrations, dbdeploy, dbdeploy.net, tarantino, dbmigrate, et al\nDML and DDL must never meet\nReference data may depend on a schema\ntest it realistically - test against a real dataset if you can\n\n \n\n
  • #21: AR migrations, dbdeploy, dbdeploy.net, tarantino, dbmigrate, et al\nDML and DDL must never meet\nReference data may depend on a schema\ntest it realistically - test against a real dataset if you can\n\n \n\n
  • #22: \n
  • #23: \n
  • #24: Don&amp;#x2019;t use email\nIf you use IDE or desktop widgets\nYou need to communicate the state to all\n\n\n
  • #25: Don&amp;#x2019;t use email\nIf you use IDE or desktop widgets\nYou need to communicate the state to all\n\n\n
  • #26: Don&amp;#x2019;t use email\nIf you use IDE or desktop widgets\nYou need to communicate the state to all\n\n\n
  • #27: \n
  • #28: \n\nNext is scaling your tests (Jules can allude to his current client on this one...)\n\nScaling your CI infrastructure:\n\nAOL incident \n\nAfter that you need to make sure your software can scale in production (twitter...) you can \n\nThen comes the feedback loop of testing scaling, and making sure that your test environment reflects all the moving parts of production accurately enough without trying to match the scale...\n\n
  • #29: \n\nNext is scaling your tests (Jules can allude to his current client on this one...)\n\nScaling your CI infrastructure:\n\nAOL incident \n\nAfter that you need to make sure your software can scale in production (twitter...) you can \n\nThen comes the feedback loop of testing scaling, and making sure that your test environment reflects all the moving parts of production accurately enough without trying to match the scale...\n\n
  • #30: \n\nNext is scaling your tests (Jules can allude to his current client on this one...)\n\nScaling your CI infrastructure:\n\nAOL incident \n\nAfter that you need to make sure your software can scale in production (twitter...) you can \n\nThen comes the feedback loop of testing scaling, and making sure that your test environment reflects all the moving parts of production accurately enough without trying to match the scale...\n\n
  • #31: Web application testing is a core driver of CI pain\n
  • #32: Web application testing is a core driver of CI pain\n
  • #33: Web application testing is a core driver of CI pain\n
  • #34: \n
  • #35: \n
  • #36: Key message. Have this proportion of tests.\nYou might not use the same tools for each tier\nA tool for testing the DOM is not a general purpose testing tool\nYou can make your application easier to test by disabling GUI features (e.g. ads, painful ajax interactions)\nGUI tests ideally will take a slice of functionality rather than logging in, testing and logging out.\nMost CI builds are slow because of GUI tests.\nParallelizing GUI tests is dangerous unless you attempt to optimise first\nSome browsers are assloads slower than others\n\n\n\n\n\n\n
  • #37: \n
  • #38: \n
  • #39: You&amp;#x2019;re not a bloody devop\nThese are the people who didn&amp;#x2019;t want to be left behind\nCollaboration is #1\nPimp our other talk\n
  • #40: You&amp;#x2019;re not a bloody devop\nThese are the people who didn&amp;#x2019;t want to be left behind\nCollaboration is #1\nPimp our other talk\n
  • #41: You&amp;#x2019;re not a bloody devop\nThese are the people who didn&amp;#x2019;t want to be left behind\nCollaboration is #1\nPimp our other talk\n
  • #42: You&amp;#x2019;re not a bloody devop\nThese are the people who didn&amp;#x2019;t want to be left behind\nCollaboration is #1\nPimp our other talk\n
  • #43: The ultimate scaling - production\n\nThere is a lot we can talk about here about actually getting code in to production. Simple stuff like making sure your deployment scripts are treated as the top level code it is and tested accordingly...\n
  • #44: The ultimate scaling - production\n\nThere is a lot we can talk about here about actually getting code in to production. Simple stuff like making sure your deployment scripts are treated as the top level code it is and tested accordingly...\n
  • #45: The ultimate scaling - production\n\nThere is a lot we can talk about here about actually getting code in to production. Simple stuff like making sure your deployment scripts are treated as the top level code it is and tested accordingly...\n
  • #46: \n
  • #47: \n
  • #48: \n
  • #49: \n
  • #50: \n
  • #51: Demo of the build pipeline plugin\nVery engineer-focused approach\nSetting up the CD system is easy, retro-fitting all the tests to your app: hard\nNo excuse not to deploy all the time to staging systems\n\n\n
  • #52: Focus on driving down cycle time\nGreater emphasis on app releases\nUsing all of the pluming of CD\nYou&amp;#x2019;re only done when you&amp;#x2019;re in prod\nvenn diagram?\nsits on pillars of previous\n
  • #53: \n
  • #54: \n