I just rolled out some new automation tools for a few projects here at work and so far I’ve been extremely happy.
Much to my embarrassment, development has previously been outside of source control due to the fact that we develop sites, we don’t deploy packaged applications, and we don’t have a cohesive IT setup (everyone sets up their desktop to their liking so maintaining consistent development environments across all computers is difficult).
However, thanks to SVN, Xinc and Phing (and DBDeploy), this has changed! Now everything is in source control and automatically deployed to our dev server upon commit. I am currently talking with Arno about perfecting svn tag monitoring to automate staging and (possibly) live deployments, so I’ll post about what I did when that’s finished.
The great thing about this setup is all pieces are technically interchangeable. If you don’t like Xinc you can use CruiseControl. If you don’t like Phing you can use Pake, or a shell script even. If you don’t like DBDeploy you can roll your own setup or swap it out for your database versioning system of your choice!
However this post will cover Xinc, Phing, and DBDeploy as (a) I have experience with them and none of the others, and (b) they integrate extremely well (Xinc and Phing’s primary distribution method of choice are PEAR channels).