We use Chef scripts for both app deployment and server spin-up. Fairly heavy investment at the start to build all the recipes, but it pays off big time in time saved later on.
Ask HN: How do you push your code to your server?
21–22 of 22 posts
Re: Ask HN: How do you push your code to your server?
#22Capistrano
Surprised this isn't a more popular response.
Vagrant/Puppet for local development
* this way every developer has an identical dev environment.
Git for code versioning - Github/Bitbucket for repo hosting
* each feature has a branch, then we use pull requests for review/merging into staging branch.
* when features are LGTM and tested, pull request to merge into production branch
Capistrano with multi-staging to deploy to staging and production servers
* every developer can deploy to staging
* only a few developers can deploy to production.