Harnessing Capistrano - RailsConf2007 Tutorial
Jamis Buck
Slide aand demos available here.
Started out as a Deployment tool
Can also use it for:
+ monitoring tool across all servers (ps, df, uname, etc.)
+ server maintenance (mounts, symlinks, ...)
+ troubleshooting
A basic config file and a demo.
A config using a gateway and a demo.
A cool description and demo of 'cap -e shell' which creates and caches a connection to each deployment server. Can be scoped by role or host.
Cap 2.0 adds namespaces for tasks. Sort of a way of grouping like tasks. (eg. cap tail:showuploadlog groups the showuploadlog task into the tail namespace.
Can do variables.
And transactions, so you can make sure tasks complete on all servers or it rolls them all back - no inbetween. No good way to recover if a rollback fails.
All sort of options for including other cap files. This was always optional in Cap 1.x, but there is no default config in Cap2.0.
You can also script-check dependencies (cap deploy:check). That looks damn useful.
scrpit/spin tell cap how to start your application Many times i's script/process/spawner
cap deploy:cold <- first time deploy
cap deploy:rollback
cap deploy:migrations
cap deploy:web:disable
cap deploy:web:enable
cap deploy:cleanup <- clean up all but the last 5 releases
In addion to standard a version control-based checkout, you can do other types: export, copy, remote cache, or you can roll your own. (Set by :deploy_via option.)
There are all sorts of nifty options to get Cap to work with all sorts of version control systems.
Lots of helpers: run, sudo, stream, connect, find_task, etc.
In the ways of advanced usage, there are:
+ before_ and after_ events (before_deploy: run_tests)
+ custom callbacks: (email notifications, etc.) with complex rules
+ staging environments: you can script deploys to behave differently based on target
Thursday, May 17, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment