My team uses local capistrano scripts for deployment of a few web apps. We use beanstalk’s hosted repository for our git repos.
It’s always bothered me that our deployment workflow doesn’t give us a centralized log of all deployments to each environment. Beanstalk’s deployment feature seems to accomplish this goal and much more.
Some weird legacy requirements meant that beanstalk’s simple FTP deployments were insufficient. However, their deployment feature can now execute SSH commands and their deployment case study made me seriously reconsider our workflow.
What are the downsides of the beanstalk approach relative to the local capistrano one? Is there any reason I shouldn’t make the switch?
The best thing about SSH deployments in Beanstalk is that you don’t have to decide between Capistrano and Beanstalk. One of the best use cases is to use them together: Beanstalk as a manager and Capistrano as a performer.
You can setup SSH deployments in Beanstalk to login to one of your servers and issue a Capistrano deployment from there. It will then deploy code to itself and other servers.
This way you get flexibility and bullet-proofness of Capistrano (transactional deploys), with the easy-of-use, permissions, notifications and timeline of Beanstalk Deployments.
This also gives you an ability to run Capistrano deployments from a mobile device or a computer where there’s no Capistrano installed.
P.S. — I work at Wildbit.