I’ll admit it. I haven’t gotten around to learning Capistrano 2 yet so many or all of these issues may be solved.
One of our clients at work has a very bizarre deployment environment. To be brief (without getting sacked) it involves svn replication, shared NFS directories and a dedicated deploy box. They also have this setup twice, once for production and once for a “staging” environment.
Since they copy our SVN tagged release to their own SVN repository it means the Capistrano script doesn’t actually do the mirroring (yet?); that is done by the client. I wrote a helper bash script that will take the tag, environment (production / “staging”) and a capistrano command to select the right capistrano script, set the right environment (although now that I think about it this is redundant now) and run the command.
But there has to be an easier way to “One Click” this with Capistrano 1.x. It is my task to find a recipe to do it!
The problems are, due to the convoluted nature of the deploy environment I may have to abuse roles or invent my own or hack Capistrano to add qualifications to roles (similar to :primary): The dedicated deploy box is the box to which the application is deployed (acts like an app server!) but it doesn’t/shouldn’t run any mongrels. In a sense it’s the primary app server since it has the authoritative source that’s shared to other app servers.
But it isn’t! It’s a nightmare! It needs to be better done. I may try to one-shot this: sh deploy.sh SomeTag production deploy_first or deploy_upgrade.

