<intent >   !"#$%




Continuous Integration Saves the Day
Kurt Schrader
Head of Engineering - Intent Media
March 10, 2010
<intent >   !"#$%




What?



                            2
<intent >   !"#$%




http://www.flickr.com/photos/27147/3411775886/
                                                      ...
<intent >   !"#$%




http://www.flickr.com/photos/bengtserenius/211225580/
                                               ...
<intent >   !"#$%




Build Continuously



                                    5
<intent >   !"#$%




Test Continuously



                                   6
<intent >   !"#$%




Why?



                           7
<intent >   !"#$%




http://www.flickr.com/photos/ericejohnson/4294710367/                       8
<intent >   !"#$%




      $160 M
http://www.flickr.com/photos/ericejohnson/4294710367/                       8
<intent >   !"#$%




Allows for change



                                   9
<intent >   !"#$%




Safety Net



                             10
<intent >   !"#$%




How?



                       11
<intent >   !"#$%




Version Control



                              12
<intent >   !"#$%




Automated Tests



                              13
<intent >   !"#$%




Automated Build



                              14
<intent >   !"#$%




Frequent Commits



                              15
<intent >   !"#$%




Make Things Visible!



                                  16
<intent >   !"#$%



Easy continuous integration recipe

·   Way to run an automated build
    >   ant
    >   make
    > ...
<intent >   !"#$%



More complex

·   Build dependencies

·   Error reporting

·   Cross-platform builds

·   Reporting

...
<intent >   !"#$%




Tools



                        19
<intent >   !"#$%




                20
<intent >   !"#$%




                20
<intent >   !"#$%




                20
<intent >   !"#$%




                20
<intent >   !"#$%




                20
<intent >   !"#$%




                20
<intent >   !"#$%




                20
<intent >   !"#$%




http://confluence.public.thoughtworks.org/
       display/CC/CI+Feature+Matrix




                 ...
<intent >   !"#$%




http://confluence.public.thoughtworks.org/
       display/CC/CI+Feature+Matrix


                 26...
<intent >   !"#$%




Getting started



                                  22
<intent >   !"#$%




Write a test



                               23
<intent >   !"#$%




Automate



                           24
<intent >   !"#$%




Related Practices



                                25
<intent >   !"#$%




Related Practices
     Enabled by CI




                                     25
<intent >   !"#$%




Have the Business
   Build Tests


                               26
<intent >   !"#$%




                27
<intent >   !"#$%
Feature: Proposal notification
  In order to reduce time spent on emailing
  Administrators should be ab...
<intent >   !"#$%




Continuous
Deployment


                             29
<intent >   !"#$%




10 Deploys a Day at
      Flickr


                                30
<intent >   !"#$%




Demo



                       31
<intent >   !"#$%




http://www.jetbrains.com/teamcity/

                                                 32
Upcoming SlideShare
Loading in …5
×

Continuous Integration Saves the Day

696 views

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
696
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

  • What do we really want to do when we integrate?
  • Any big software project has to integrate a bunch of pieces.
    Want it to go like this
    ...assume that it&amp;#x2019;s going to go like this.
    Get all of the different parts running in sync
  • Usually ends up like this
    All continuous integration is is putting all of the cars on the road everyday multiple times a day
    Causes small accidents to prevent big pile ups.
  • But more importantly...

  • Why would you do this:
    -happier developers
    -less time fixing bugs

  • Mark Striebeck - XPDay 2009 Keynote - Google:
    Estimated that a bug found during TDD costs $5 to fix, which surges to $50 for tests during a full build and $500 during an integration test. It goes to $5000 during a system test.
    &lt;Next slide&gt;
    Fixing bugs earlier would save them an estimated $160M per year.


  • Reduced risk and less bugs
  • What do I need to do Continuous Integration?

  • - Need to be fast
    - Don&amp;#x2019;t get a false sense of security
    - Unit tests
    - More importantly, integration tests (harder to write, slower to run)


  • If a build breaks and no one knows, is it broken?









  • One of those things, like a bug tracker, that everyone seems to write

  • Need to collectively own.
    Need buy in from developers and the organization
    &amp;#x201C;1 month to write a single integration test&amp;#x201D;
    &amp;#x201C;How did you fix your breaking builds?&amp;#x201D; &amp;#x201C;We turned off the CI server&amp;#x201D;
  • Just do it
    Get it visible in front of your developers
  • Things that enabled once you have a strong CI infrastructure in place
  • By business, I mean whoever sets your priorities






  • Continuous Integration Saves the Day

    1. 1. <intent > !"#$% Continuous Integration Saves the Day Kurt Schrader Head of Engineering - Intent Media March 10, 2010
    2. 2. <intent > !"#$% What? 2
    3. 3. <intent > !"#$% http://www.flickr.com/photos/27147/3411775886/ 3
    4. 4. <intent > !"#$% http://www.flickr.com/photos/bengtserenius/211225580/ 4
    5. 5. <intent > !"#$% Build Continuously 5
    6. 6. <intent > !"#$% Test Continuously 6
    7. 7. <intent > !"#$% Why? 7
    8. 8. <intent > !"#$% http://www.flickr.com/photos/ericejohnson/4294710367/ 8
    9. 9. <intent > !"#$% $160 M http://www.flickr.com/photos/ericejohnson/4294710367/ 8
    10. 10. <intent > !"#$% Allows for change 9
    11. 11. <intent > !"#$% Safety Net 10
    12. 12. <intent > !"#$% How? 11
    13. 13. <intent > !"#$% Version Control 12
    14. 14. <intent > !"#$% Automated Tests 13
    15. 15. <intent > !"#$% Automated Build 14
    16. 16. <intent > !"#$% Frequent Commits 15
    17. 17. <intent > !"#$% Make Things Visible! 16
    18. 18. <intent > !"#$% Easy continuous integration recipe · Way to run an automated build > ant > make > rake > etc · Cron job · Notifier 17
    19. 19. <intent > !"#$% More complex · Build dependencies · Error reporting · Cross-platform builds · Reporting · Statistics 18
    20. 20. <intent > !"#$% Tools 19
    21. 21. <intent > !"#$% 20
    22. 22. <intent > !"#$% 20
    23. 23. <intent > !"#$% 20
    24. 24. <intent > !"#$% 20
    25. 25. <intent > !"#$% 20
    26. 26. <intent > !"#$% 20
    27. 27. <intent > !"#$% 20
    28. 28. <intent > !"#$% http://confluence.public.thoughtworks.org/ display/CC/CI+Feature+Matrix 21
    29. 29. <intent > !"#$% http://confluence.public.thoughtworks.org/ display/CC/CI+Feature+Matrix 26 Tools 21
    30. 30. <intent > !"#$% Getting started 22
    31. 31. <intent > !"#$% Write a test 23
    32. 32. <intent > !"#$% Automate 24
    33. 33. <intent > !"#$% Related Practices 25
    34. 34. <intent > !"#$% Related Practices Enabled by CI 25
    35. 35. <intent > !"#$% Have the Business Build Tests 26
    36. 36. <intent > !"#$% 27
    37. 37. <intent > !"#$% Feature: Proposal notification In order to reduce time spent on emailing Administrators should be able to mail all proposals owners depending on status Scenario: Email accepted proposal Given aslak.hellesoy@gmail.com proposed Cucumber And the Cucumber proposal is approved When I send mass proposal email Then aslak.hellesoy@gmail.com should get email """ Hi aslak.hellesoy@gmail.com Congratulations, Cucumber was accepted. See you at RailsConf! """ 28
    38. 38. <intent > !"#$% Continuous Deployment 29
    39. 39. <intent > !"#$% 10 Deploys a Day at Flickr 30
    40. 40. <intent > !"#$% Demo 31
    41. 41. <intent > !"#$% http://www.jetbrains.com/teamcity/ 32

    ×