views:

725

answers:

2

I'm using PHPUnderControl (a Cruise Control plugin for PHP) as the CI server for PHP development. I use Ant to build my project. Main used features of PHPUC are

  • PHPUnit test review
  • PHPCS review
  • Diagrams, PHP PMD, PHPCPD and some misc. thing.

What are the pros of Hudson vs. PHPUC? I heard it's development is faster and more widely used day by day.

+1  A: 

Hudson as a nice Ui and can be configured 99% of the time through the webui. Last time I looked at cruise control, you had to sniff around in various xml files.

ZeissS
Configuring through xml is still in CC AFAIK.
erenon
+8  A: 

We switched from PHPUC to Hudson about a year ago and have certainly enjoyed it. One of the main advantages is how easy it is to create and edit projects since it is all done through a nice web UI, no messing about in XML config files. You also don't have to restart Hudson after changing settings, so I found it a lot easier and quicker to iterate on a project.

Another thing that really impressed me about Hudson was how many problems it can detect and point out for you. For example, more than once with PHPUC the build stopped working in such a way that the phpunit XML was no longer generated, but PHPUC happily used the old results for days or weeks until we realized. Hudson pointed this out right away saying that the log file had not been touched since the build started! When setting up projects too in the web UI, it will tell you if directories / SCM locations don't exist as you type, and offer google-esque suggestions as to what you meant, spotting problems before you even save the configuration! Also if building periodically with a cron entry like "* 4 * * *" it will say, "did you really mean every minute of 4, or do you mean '0 4 * * *'?"

That said, while the community and plugin ecosystem is rich, Hudson is also more generic than PHPUC so it isn't as tightly integrated into PHP projects, but can happily publish code coverage and phpdoc (and any HTML report) reports via plugins.

Also, don't forget that if a solution (PHPUC) isn't broken, there may not be a need to fix it. However you can easily evaluate Hudson for initial impressions by downloading the .war file and running "java -jar hudson.war", and you'll be running an instance in under a minute.

Overall I feel it has made our builds and deployments more robust and repeatable, catching errors faster, and also speeding up many tasks (it can install slaves for itself via SSH and distribute jobs or run them concurrently!)

mrooney
Well explained, thanks.
erenon