What does HackerNews think of capistrano?
A deployment automation tool built on Ruby, Rake, and SSH.
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.
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.
The versioning system is great too, if a deploy is bad, you can simply cap rollback, which will revert the changes.
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
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 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...