Published on

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

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  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>