README in whiskey_disk-0.0.5 vs README in whiskey_disk-0.0.6
- old
+ new
@@ -1,13 +1,44 @@
Whiskey Disk -- embarrassingly fast deployments.
A very opinionated deployment tool, designed to be as fast as technologically
- possible.
+ possible. (For more background, read the WHY.txt file)
Should work with any project which is git hosted, not just Ruby / Ruby on Rails projects.
Allows for local deploys as well as remote.
+ Selling points:
+
+ - If you share the same opinions there's almost no code involved, almost no dependencies,
+ and it uses stock *nix tools (ssh, bash, rsync) to get everything done.
+
+ - Written completely spec-first for 100% coverage. We even did that for the rake tasks,
+ the init.rb and the plugin install.rb if you swing that way.
+
+ - 1 ssh connection per rake task -- so everything needed to do a full setup is done in
+ one shot. Everything needed to do a full deployment is done in one shot. Having 8
+ minute deploys failing because I was on cdma wireless on a train in india where the
+ connection won't stay up for more than 2-3 minutes is not where I want to be.
+
+ - You can do *local* deployments, by this I mean you can use whiskey_disk to manage your
+ local checkout with localized (aka non-production) configurations trivially. This turns
+ out to be surprisingly handy (well, I was surprised).
+
+ - You can have per-developer configurations for environments (especially useful for
+ "local" or "development" enviroments). Use .gitignore and everyone can have their own
+ local setup that just works.
+
+ - Deployment configuration is specified as YAML data, not as code. Operations to perform
+ after setup or deployment are specified as rake tasks.
+
+ - There's no before_after_before_after hooks. You've got plenty of flexibility with just
+ a handful of rake hook points to grab onto.
+
+ - rake deploy:setup and rake deploy:now are really all that are needed, best I can tell.
+
+
+
Dependencies: rake, ssh, git, rsync on the deployment target server (affectionately
referred to as the "g-node" by vinbarnes), bash-ish shell on deployment
server.
Assumptions:
@@ -56,10 +87,41 @@
Running:
- rake deploy:setup to=<environment> (e.g., "staging", "production", etc.)
- rake deploy:now to=<environment>
+ More Examples:
+ - We are using this to manage larry. See:
+
+ http://github.com/rick/larry/blob/master/config/deploy.yml
+ http://github.com/rick/larry/blob/master/config/deploy-local.yml.example
+ http://github.com/rick/larry/blob/master/lib/tasks/deploy.rake
+
+ - We are using it on a private project with lots of config files, but here's
+ a gist showing a bit more interesting deploy.rake file for post_setup and
+ post_deploy work:
+
+ https://gist.github.com/47e23f2980943531beeb
+
+
+
+ On the radar for an upcoming release are:
+
+ - common post_* recipes being specifiable by symbol names in deploy.yml ?
+ - making the config repo stuff optional if you don't need that at all
+ - bringing in a very simplified version of mislav/git-deploy post-{receive,reset}
+ hooks, and a little sugar so you can say:
+
+ task :post_deploy do
+ if has_changes?('db/migrate') or has_changes?('config/database.yml')
+ Rake::Task['db:migrate'].invoke
+ end
+ end
+
+
Resources:
- http://github.com/blog/470-deployment-script-spring-cleaning
- http://github.com/mislav/git-deploy
- http://toroid.org/ams/git-website-howto
+
+