Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

Published in: Self Improvement, Technology
  • Be the first to comment


  1. 1. BuildBot Continuous Integration System Willie <>
  2. 2. Agenda <ul><li>How do I use BuildBot?
  3. 3. What is BuildBot?
  4. 4. Practices of Continuous Integration </li></ul>
  5. 5. How do I use BuildBot?
  6. 6. 2. Commit 3. Trigger 4. Wait & See Email If Fail <ul>1. Unit Test </ul>
  7. 7. 1. Update codebase 2. Unit Test 3. Replace the previous one (/home/uagent) 4. Restart 5. Stress Test 6. System Test Help me to find 5+ bugs in the last week.
  8. 8. What is BuildBot?
  9. 9. BuildBot <ul><li>A continuous integration system
  10. 10. Help to automate the compile/test cycle
  11. 11. Written in Python </li></ul>
  12. 12. Screenshot
  13. 13. Screenshot (cont.)
  14. 14. System architecture
  15. 15. Similar projects <ul><li>Hudson (JAVA) </li></ul>
  16. 16. Similar projects <ul><li>CruiseControl (JAVA) </li></ul>
  17. 17. Similar projects <ul><li>CruiseControl.NET (C#) </li></ul>
  18. 18. BuildBot Demo
  19. 19. Practices of Continuous Integration
  20. 20. What is CI <ul><li>A software development practice (requires no particular tooling)
  21. 21. From Extreme Programming development process
  22. 22. CruiseControl is the first CI system created by ThoughtWorks company. </li></ul>
  23. 23. Why use CI system <ul><li>Detect integration errors ASAP </li></ul><ul><ul><li>Fix bugs made in last week: painful
  24. 24. Fix bugs made in last month: very painful!!! </li></ul></ul>
  25. 25. People thought... <ul><li>Before </li></ul><ul><ul><li>It can't work (here).
  26. 26. Doing it won't make much difference. </li></ul></ul><ul><li>After </li></ul><ul><ul><li>Yes we do that – how could you live without it? </li></ul></ul>
  27. 27. How to use CI system <ul><li>Checkout source code from VCS
  28. 28. Modify code
  29. 29. Run self-testing code (ex. unit test)
  30. 30. Update and commit
  31. 31. Run self-testing code on an
  32. 32. integration machine </li></ul>
  33. 33. How to use CI system (cont.) <ul><li>Step 5. can be done automatically by CI system
  34. 34. Errors is detected rapidly
  35. 35. A good team should have many correct builds a day
  36. 36. Bad builds do occur from time to time, but should be quickly fixed </li></ul>
  37. 37. Practices of CI <ul><li>Maintain a single source repository </li></ul><ul><ul><li>Put everything required for a build </li></ul></ul><ul><li>Automate the build </li></ul><ul><ul><li>Build and launch in a single command
  38. 38. Need a virgin machine </li></ul></ul>
  39. 39. Practices of CI (cont.) <ul><li>Make your build self-testing </li></ul><ul><ul><li>Testing can catch a lot of bugs – enough to be useful </li></ul></ul><ul><li>Everyone commits every day </li></ul><ul><ul><li>Conflicts that stay undetected for weeks can be very hard to resolve </li></ul></ul>
  40. 40. Practices of CI (cont.) <ul><li>Every commit should build the mainline on an integration machine </li></ul><ul><ul><li>Why: things still go wrong </li><ul><li>Developers forget to run build before commit
  41. 41. Environmental differences </li></ul><li>Manual build & CI system </li></ul></ul>
  42. 42. Practices of CI (cont.) <ul><li>Keep the build fast </li></ul><ul><ul><li>The whole point of CI is to provide rapid feedback
  43. 43. 10 minutes build </li></ul></ul>
  44. 44. Practices of CI (cont.) <ul><li>Keep the build fast (cont.) </li></ul><ul><ul><li>Staged build (2 nd build doesn't have the same 'stop everthing' quality) </li></ul></ul>
  45. 45. Practices of CI (cont.) <ul><li>Keep the build fast (cont.) </li></ul><ul><ul><li>2 nd build fails: add another test into commit test suit </li><ul><li>MySQL story </li></ul></ul></ul><ul><li>Test in a clone of the production environment </li></ul><ul><ul><li>Real tests without mocks </li></ul></ul>
  46. 46. Practices of CI (cont.) <ul><li>Make it easy for anyone to get the latest executable </li></ul><ul><ul><li>Nightly build </li></ul></ul><ul><li>Everyone can see what's happening </li></ul><ul><ul><li>BuildBot demo (countdown) </li></ul></ul><ul><li>Automate deployment </li></ul><ul><ul><li>Also needs automated rollback </li></ul></ul>
  47. 47. Benefits of CI <ul><li>Reduce risk </li></ul><ul><ul><li>Integration is a long and unpredictable process </li></ul></ul><ul><li>There's no long integration anymore
  48. 48. Easier to find bugs and remove them </li></ul><ul><ul><li>Quality of your test suits </li></ul></ul>
  49. 49. Where to start <ul>1.Get the build automated </ul><ul><ul><ul><li>An automated nightly build is a fine step </li></ul></ul></ul><ul>2.Introduce some automated testing into your build </ul><ul><ul><ul><li>Try to identify the major areas </li></ul></ul></ul>
  50. 50. Where to start (cont.) <ul>3.Try to speed up the commit build </ul><ul><ul><ul><li>Magic 10 mins </li></ul></ul></ul>