In another of his "Twitter Asks" series of posts, Chris Hartjes takes a look at continuous integration in PHP applications and some of his choices/personal preferences when it comes to the technology to use.
For those not familiar with the concept of Continuous Integration, I can sum it up with one very glib phrase: it lets you break your code before you buy it. By this I mean, when combined with other programming practices like automated deployment and Test Driven Development, you get a chance to see if the code you've written *today* breaks anything you wrote *yesterday*.
He points out some of the major advantages to having a continuous integration (CI) system set up for your application or site including the biggest - knowing your code is broken before it even gets released. He talks about various deployment/CI tools he's seen including phpUnderControl, Xinc and Hudson (with his preference falling on the last). He doesn't get into the setup of the tools much - each application's setup is different anyway - but he does give an overview of how the process flows in his sample build. One of the keys is having good tests to support the application. Only with those set up will you know when things are badly broken.