What does HackerNews think of capistrano?

A deployment automation tool built on Ruby, Rake, and SSH.

Language: Ruby

#2 in Deployment
#11 in Ruby
If you don't want to go down the NFS share route then Capistrano is a useful tool if you're willing to write a little bit of ruby. It comes with some built in goodies like rollbacks. It's an oldie (pre-dockerize everything), but still useful.

https://github.com/capistrano/capistrano

You can start by deploying from your machine to simultaneously get it deploying across all your servers, then I'd consider having a CI/CD pipeline take over and run Capistrano for you.

Capistrano is great. https://github.com/capistrano/capistrano

It's a bit much at first, but once you realize that it's basically just a build file with some handy functionality baked in, it's very useful. Here's an example of a deploy script for deploying a git repo to a single machine:

    set :application, "Project Name"
    set :repository, "[email protected]:project/project.git"
    set :use_sudo, false
    set :user, "deploy_user"
    set :shared_children, ["list", "of", "directories/to", "symlink/rather/than/copy"]
    set :copy_exclude, [".git/*"]
    set :scm, :git
    set :branch, "master"
    set :deploy_via, :remote_cache
    set :keep_releases, 5
    set :deploy_to, "/path/to/deploy/to"

    server "1.2.3.4", :app, :web, :db
Then you just run `cap deploy` and you're deploying. `cap rollback` instantly rolls back to the previous revision of your code. That deploy script keeps 5 releases and manages a symlink that points to the current release. The git repo is kept checked out, and then is updated and copied to a release directory, so you have multiple separate snapshots of your application on hand.

It's also extremely extensible; we use it to do asset pre-builds, send deployment notices to Hipchat and NewRelic, flush caches, restart background workers, and the like.

I use Capistrano (https://github.com/capistrano/capistrano) for our deployments for zero downtime. It's rails heavy (and requires ruby) but with tinkering I've also gotten it to deploy my Node and Go apps.

The versioning system is great too, if a deploy is bad, you can simply cap rollback, which will revert the changes.

What we use at graphdat.

Source code: http://www.github.com\nWe could host our own server, but github is really convenient and our SDKs are open source so its easier.

Workflow & Issues: http://huboard.com/\nGiven we use github, huboard makes it easy to mange the issues

Build: http://jenkins-ci.org/ and https://github.com/capistrano/capistrano\nSuch a nice setup, we host our own jenkins server, I have seen some links above to Travis, might give that a spin.

Tickets & Wiki: http://www.uservoice.com\nIts a love/hate relationship with uservoice. They make some things easy, others are so arcane. I'm adding in a wiki article right now with some images in it. But uservoice doesn't let you host an image, so I put it into an S3 bucket, add the link to uservoice and there is a security error. I go back to the bucket, reset the security settings and uservoice is caching the image error and wont let me add the images, so I need to edit the source. So hard for something so simple.

Team Communication: https://www.flowdock.com/\nWe were using Campfire, but we like flowdock much better. Threaded conversations are still tough, I actually miss Google Wave. We had 1 wave a day, it starts to grow on you.

Log Aggregation: http://graylog2.org/\nVery cool once you get it all working together

Server Metrics and Application Analytics: http://www.graphdat.com\nWe dog food our own product, so it's our servers on the homepage..

Some other notable candidates:

'your personal website': http://backstit.ch/\nhandy to monitor a couple of feeds

'tech news aggregator': http://skimfeed.com/\nnice way to skim some news

I fully agree with this article.

At my startup, Semantics3, we use Capistrano [1] for multi-machine deployments of our git repos. This has greatly helped our productivity as it just takes a couple of minutes to go from dev to production!

Through a single command (cap -f api deploy:start) our entire cluster get the latest git repo and all the services are (re)started - we use Upstart for daemonizing our processses and Monit for process monitoring. All of them seamlessly work together.

[1] https://github.com/capistrano/capistrano There is also nice gui frontend to it. You can do deployments through the web, with built in logging and user management! Its called Webistrano - https://github.com/peritor/webistrano/

You could run something like Autotest for continuous testing & quality control: http://ph7spot.com/musings/getting-started-with-autotest

You can run Capistrano for continuous deployment: https://github.com/capistrano/capistrano.

If you wanted to go the extra mile you could also setup different staging environments on your server: http://cjohansen.no/en/rails/multi_staging_environment_for_r...