We recently started using Capistrano for our deployments. It's a great tool and really simplifies doing remote deployments to ec2.
A lot of our projects are java, or java web projects, so we need to deploy the result of a build, not the raw source. I really didn't want to store builds alongside the source code in subversion. Before capistrano, I had written a couple of install shell scripts that would fetch the latest project binary from S3, using bucket names structure like:
current always pointing to the latest version.
There is a capistrano-s3 project that checks out from your scm, creates a .tar.gz, pushes this to s3, and then pushes this to your servers.
This isn't exactly what I wanted, since it's still missing a build step. I thought I could get by with something pretty simple -- just a scm implementation backed by S3. It turns out it was pretty easy.
And you can now use the following:
set :scm, :s3 set :repository, "my-bucket:my-path"
by default it will look in
my-bucket:my-path/current/, you can also set
set :branch, "1.12"
and it will look in
If your AWS keys aren't available in the environment for s3sync, you can also set these in your capfile:
set :access_key, "my key" set :secret_key, "my secret"
That's basically it. I'm pretty new to both capistrano and ruby, so any comments, feedback, etc. would be appreciated.comments powered by Disqus