Right now, the current deploy process at my work is based around tagging from the trunk and switching various PHP web sites for clients on our QA and Production servers. While this is simple from the technical level, it becomes really tedious when you have over a dozen updates to a dozen different sites that need to go out in one day.
Towards this end, I'm implementing the following stack:
- SVN
- Hudson
- Capistrano
And it will work like this:
- Code goes into
svn
svn
post-commit hook triggershudson
hudson
runs acapistrano
script to deploy to the dev server- project managers check out the dev server, and if the bug is fixed, they go into
hudson
and promote the build hudson
runs a post-promotion script which tags and deploys the code to whatever server is specified by the promotion
Capistrano (along with the symfony framework) will be used to migrate the databases.
Am I missing anything here? I've never done anything more complicated than subversion before, so that's why I'm asking.