The Journey towards Continuous Integration

3,237 views
3,127 views

Published on

Over the past two years we’ve been pushing to improve our automated testing practices within Plusnet and to win full support for it within the company across the spectrum of fellow developers, project managers and upper management. It took a while to agree on software we want to use, and standards we want to follow, but now all new code is being continuously built and tested and the results of that are visible business-wide. We use PHP_CodeSniffer to verify that we follow our coding standards, PHPDocumentor to generate automated API documentation, PHPUnit to run test suites and phpUnderControl to run all these tools regulary, at least once a day and to generate aggregated reports. Finally, Sonar allows us to create and publish reports visible to everybody and more importantly reports that everybody can understand.
Setting it all up can be a tough exercise, but if you prepare to it upfront you might actually find it quite exciting! So, you strongly believe this is the way you should be developing your code, but you don’t really know where to start? Let me show you how our journey began. You don’t know how to convince your fellow developers to follow you? I’ll tell you how to establish a strong team that will follow you. Your managers seem to be more interested in delivering your project on time and don’t really see a point in spending additional time on unit testing and documenting your code? Maybe you haven’t shown them the benefits of continuous integration in a way they can understand.
I’ll show you what worked for us.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,237
On SlideShare
0
From Embeds
0
Number of Embeds
136
Actions
Shares
0
Downloads
44
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

The Journey towards Continuous Integration

  1. 1. PHP North West 2010 The Journey Towards Continuous Integration Sebastian Marek, Senior Software Engineer
  2. 2. @proofek  a Pole living in Sheffield  nearly 10 years PHP experience  co-author of 2 PHP books  big fan of process automation  TDD and CI  wants to be a knight
  3. 3. One Morning Long Ago
  4. 4. New experience  Alpha-box set up  New development processes  Staging platform and QA team  Deployment procedures  Fixing problems  Working on projects
  5. 5. At the Foot of Mount Doom  increased maintenance time  growing problem numbers  code harder to understand and follow  complex and time consuming testing
  6. 6. Looking for help!
  7. 7. First frustrations  ad hoc builds  mixture of php3 and php4  learn as you go  no standards
  8. 8. Forming up the fellowship  Stuart Grimshaw  Simon Westcott  Ben Selby  Sebastian Marek  Rowan Merewood  Ben Longden
  9. 9. Calling the council Who?  managers  developers What?  threats  opportunities  planning  implementation http://www.flickr.com/photos/pedromourapinheiro/3272323691/in/photostream/
  10. 10. It's always about the money  Design debt  Late fees  Interests http://www.flickr.com/photos/your_teacher/1040476355/in/photostream/
  11. 11. Finding the best way VS.
  12. 12. Support & roadmap http://www.flickr.com/photos/jannem/3312115991/in/photostream/
  13. 13. Metrics and reports http://www.flickr.com/photos/aussiegall/286709039/in/photostream/
  14. 14. Joining more powerful allies
  15. 15. Automation http://www.flickr.com/photos/matthileo/3552898254/in/photostream/
  16. 16. East front
  17. 17. Automated builds  Cruicecontrol addon  PHPUnit integration  phpDocumentor integration  code metrics generation  code coverage reports  checkstyle report integration  PHP Depend integration  PHPMD support  and many more
  18. 18. PHPUnit Industry recognised xUnit testing framework for PHP, supporting:  mock objects  database testing  code coverage analysis integrating  selenium RC  continuous integration platforms like CruiseControl, Hudson, Bamboo
  19. 19. phpDocumentor  automated documentation for PHP  supports different formats: HTML, PDF, CHM, XML  web and cli interface  easily configurable
  20. 20. PHP_Codesniffer  Based on defined coding standards  Detects coding standards violation  Extendable and configurable  Codebrowser
  21. 21. Code coverage report  Be always on top of your tests  Code coverage ratio  Configurable thresholds  Clover format  Html format
  22. 22. Software metrics - PHP Depend Code measures  Cyclomatic Complexity  NPath Complexity  CodeRank  Lines Of Code
  23. 23. PHP Mess Detector Intelligent code analyser  Possible bugs  Suboptimal code  Overcomplicated expressions  Unused parameters, methods, properties
  24. 24. Buildbox maintenance  New modules added  Increasing build time  Often crashes  Stability problems  Hardware issues
  25. 25. phpUnderControl
  26. 26. Upgrades needed
  27. 27. Hudson – next generation  easy installation  easy configuration  plugin support  distributed builds  multi-language support  dependency tracking
  28. 28. Hudson
  29. 29. More automation  git - distributed version control system  AIE – alpha integrated environment  capistrano  automated deployment  build script management
  30. 30. Selenium  Automated web apps testing  Regression testing  Headless builds
  31. 31. One ring to rule them all http://www.flickr.com/photos/cosmic_bandita/2218419160/in/photostream/
  32. 32. West front
  33. 33. Sonar  quality management platform  continuous analysis  easily extendable and configurable
  34. 34. Sonar
  35. 35. Business wide visibility  Meaningful reports  Responsibility and ownership  KPI  Goals
  36. 36. Radiator view
  37. 37. Reports
  38. 38. The army needs to follow the leader  Lead by example  firm, but friendly and helpful  never forget about training  clear and simple rules  praise vs. punishment
  39. 39. You broke the build!
  40. 40. Where's the build?
  41. 41. Works on my machine?!
  42. 42. It's your time now
  43. 43. Quick guide 1. Investigate 2. Trial 3. Form a team 4. Small steps 5. Be visible 6. Automate
  44. 44. Resources  PHPUnit - http://www.phpunit.de/  phpUnderControl - http://phpundercontrol.org/  Hudson - http://hudson-ci.org/  Sonar - http://www.sonarsource.org/  phpDocumentor - http://www.phpdoc.org/  PHP_CodeSniffer - http://pear.php.net/package/PHP_CodeSniffer/  PHP Depend - http://pdepend.org/  PHP Mess Detector - http://phpmd.org/  Selenium - http://seleniumhq.org/  xDebug - http://www.xdebug.org/
  45. 45. Q&A Any questions? http://joind.in/2052

×