Deployment and updating

Hi all,

For my ‘day job’, we’ve got quite a complex set of environments. For this, we have a custom deployment tool, which gets translated into Phing buildfiles (which basically in them contain chains of SSH commands), for deploying things to remote servers, taking care of cache cleanups, etc.

We’ve been tossed into the ‘cloud’, and are looking to improve/augment our release strategy. We do use SCM, but we have other various components not in SCM which get released through our deployment tool, and that actually takes care of components which reside in our repositories.

What I’m looking for is another system, which is similar to Phing, but perhaps more robust - Ant is out of the question. I was looking at Capistrano, but it seems to want things done very specifically, in really specific locations. We can’t really have that.

I guess a rsync-type tool, which can take a bunch of changesets sitting X server, and goto Y server, but also be able to handle going from A to C through B (a gateway). The gateway is a huge minus from Phing, which I see Capistrano and Vlad do have this feature, they’re too rigid (we are mainly a PHP shop, but our applications are laid out in a very specific manner).

So is there anything out there I’m missing? I’m looking at Fabric, looks interesting, but I still don’t think it can handle gateway’d SSH connections. Just seeing if there’s anything out there before I code something up.

Thanks!!