we had a discussion in chat :

18:20 < yossarian> on a totally unrelated subject,
18:20 < yossarian> http://labs.peritor.com/webistrano
18:21 < yossarian> that would be so fucking cool to use
18:21 < yossarian> as IMCs could make changes to their apps 
18:21 < yossarian> and deploy them themselves
18:21 < yossarian> with fairly minimal technical knowledge or server access
18:22 < yossarian> http://www.simplisticcomplexity.com/2006/8/16/automated-php-deployment-with-capistrano/

18:41 < startx> we should start a list of possible tasks which could be controlled by such a software
18:42 < yossarian> and that checks out the latest from svn, uploads it to the server as a new version, uploads a maintenance page ("site is undergoing maintenance"), 
                   symlinks the new version as the current version, runs database migration scripts, runs tests, restarts the app server, and takes down the maintenance 
                   page
18:42 < startx> ok i start a wiki page for that
18:42 < yossarian> if the deployment fails, the "down" migration reverts the db back to its original state, and switches the symlink back to the older code version
18:42 < yossarian> or if there's a bug in the new version, you can run
18:42 < yossarian> cap rollback
18:43 < yossarian> and the whole app rolls back to the previously deployed version, again including database changes
18:43 < yossarian> i'm using it at work, it's awesome
18:43 < yossarian> so now these dudes have come up with something called "webistrano"
18:43 < yossarian> which is a web-based interface to capistrano
18:44 < yossarian> so let's say we had 50 IMCs and were deploying with capistrano
18:44 < yossarian> they could manage their own svn commits
18:44 < yossarian> let's say for a template change or something
18:44 < yossarian> and go to the webistrano site
18:44 < yossarian> press a button 
18:44 < yossarian> and deploy the new code themselves
18:45 < yossarian> without any necessity to ask like "yossarian, can you deploy this change" or whatever
18:46 < yossarian> it can also be used to define and manage staging servers, i guess
18:46 < yossarian> so they could deploy a new change from svn to a test server
18:46 < yossarian> make sure it works
18:46 < yossarian> and then deploy it to a live box

  • and that checks out the latest from svn, uploads it to the server as a new version,
  • uploads a maintenance page ("site is undergoing maintenance"),
  • symlinks the new version as the current version,
  • runs database migration scripts,
  • runs tests,
  • restarts the app server,
  • and takes down the maintenance page