Continuous Integration: Stop Procrastinating and Build Often!

Continuous Integration (CI) is quickly becoming a de-facto standard for PHP development teams. CI allows for more frequent deployments and more ambitious refactoring, and significantly reduces the number of bugs deployed to production. Oftentimes, the biggest obstacle to implementing CI is the unknown. In this session, we will de-mystify the process and take a look at how easy it is to get a minimum viable continuous integration environment in place using Jenkins, PHPUnit, Selenium, and chat. PageSlides

by Patrick Mizer

My biggest take away from the this talk were the tools that were mentioned and some of the interesting ways in which they are being used. Unfortunately through no fault of the presenter Continuous Integration is a pretty complicated topic and I don't think it can adequately be covered in the time available. Since the talk didn't focus so much on getting people up and running (the technical fiddly bits) I think more effort could have been made to offer a wider range of tools. For example, the only build tools that where mentioned were Ant and Phing. If you are going to mention one non-PHP solution at a PHP conference you should make an effort to cover the major ones out there (Grunt, Gulp, etc.). Similarly this talk focused very heavily on Jenkins as a CI server solution but with no specific implementation examples it would have been nice to be presented with a few other alternatives. I am not suggesting that he cover all possible options that are available in full detail, but maybe adopt a format of “here is what we use, and these are the popular alternatives”. That said, Patrick did a pretty good job delivering his material and I thought his slide deck was well prepared. I would probably attend a future talk with Patrick.

My notes for this section can be found below:

  • build tool like Ant or Phing
  • CI server like Jenkins
  • php code sniffer
  • copy paste detector
  • phantomjs – headless browser with JS
  • yslow – is tool for analyzing web page execution speed
  • using phantomjs with yslow can be used to monitor performance as part of the build process
  • HipChat can be used to receive build notification
  • email isn't a good solution for notifications for CI.
  • build process needs to be reliable or people wont buy into it. someone needs to own the process and make sure it continues to work
  • version CI configuration just like your code
  • put your DB schema changes into version control
  • before a branch can be merged into the parent branch it should be built and checked for failures
  • “how can I fix windows issues with the build process?” “don't use windows, or run build on a VM”