Webistrano - A Web UI for managing Capistrano deployments

Posted by Jonathan

I'm happy to announce the release of Webistrano - a Web UI for managing Capistrano deployments.

Webistrano is an internal application that I developed at Peritor for the easy handling of Capistrano deployments. I often had situations where our designer updated some images and wanted to update/deploy our Rails project. Capistrano offers a nice command line interface for doing this but this is not the right tool for a designer, especially if you have a complicated multi-stage environment with production, staging and test settings.

Further we wanted to be able to keep track of who deployed what when to which servers.

This is where Webistrano enters the stage.

Webistrano

Webistrano is a Ruby on Rails application that manages projects with their different stages (like production or testing) and leverages Capistrano to handle the deployment part. This way it is very easy to handle multi-stage and multi-client situations and keep an eye on all deployments. It further includes a simple email alerting system so that you get pinged if somebody deploys to the production servers.

We are using Webistrano for quite some time now and it has proven stable for our needs. I am releasing it under the BSD license. The Subversion repository is located at Rubyforge.

On the project page you can find two screencasts that show you how to get Webistrano running and explain some advanced concepts.

Version 1.0 can be downloaded here:
Make sure to watch the screencasts:  

I presented Webistrano last month at the Berlin Ruby User Group (then under the name 'Webcap') and the feedback was quite positive. I'd love to hear your feedback and suggestions.

UPDATE:
There was a problem with the Mephisto comment system that resulted in all posted comment being posted to /dev/null. The problem is fixed now, please re-submit your comments.

Comments

Leave a response

  1. MathiasAugust 28, 2007 @ 06:32 PM

    Very nice work, Jonathan. Looking forward to giving it a go.

  2. DanielAugust 28, 2007 @ 06:44 PM

    Thanks Jonathan,

    I’ll definitely try Webistrano. As a matter of fact I’ve been meaning to write something similar, but never got around to actually doing it. So thanks for saving me the time :-)

    Regards Daniel

  3. Peter BerkenboschAugust 28, 2007 @ 07:11 PM

    Briljant! Made some sketches and basic code myself the other day, but you just made my day !

  4. Mark HoltonAugust 28, 2007 @ 11:22 PM

    Damn cool concept. Can’t wait to check out the screencasts and check it out. Many thanks for this, Jonathan. cheers, Mark Holton

  5. MartinAugust 29, 2007 @ 09:54 AM

    This looks fantastic. Can’t wait to try it out. Top work.

  6. ChristianAugust 29, 2007 @ 12:26 PM

    Hi, I was very impressed by webistrano, one question: is it compatible with capistrano 2.x? I have some strange things going on with webistrano with capistrano 2.0.0 and was wondering if this had to do with it.

  7. JonathanAugust 29, 2007 @ 12:49 PM

    @Christian:

    Webistrano uses Capistrano 2.0 internally. It is pre-packaged in /vendor/. So an installed cap2 should not disturb Webistrano.

  8. peterAugust 29, 2007 @ 01:08 PM

    Nice work!!! Is possible to load (copy to dir) my existing recipe files and use them in Webistrano? I have also plugins created in modules and registered Capistrano.plugin :sql, MySQLMethods how can I use them in Webistrano?

  9. JonathanAugust 29, 2007 @ 07:29 PM

    @peter:

    At the moment Webistrano can not import existing Capfiles but you can add your own custom Capistrano tasks and variables as Webistrano Recipes. See also the second screencast.

    You can put Capistrano plugins into /vendor/plugins and then reference them in your custom recipes.

  10. AlexAugust 31, 2007 @ 08:53 AM

    I can say from experience (we’ve been using webistrano for MeinProf for a couple of weeks now) that it’s a great tool. Especially for team members who don’t have access to the servers and don’t know jack about capistrano (like me).

  11. SteveAugust 31, 2007 @ 09:28 AM

    This looks great. Good work.

  12. Tom BriceAugust 31, 2007 @ 02:10 PM

    Great work. This looks like a very good tool. I’m thinking this actually might be a good way to migrate cap 1.4.x deployments to cap 2. Might be the impetus to make the move for some of my older apps.

    Thanks!

  13. Micah WinkelspechtSeptember 01, 2007 @ 11:32 AM

    This is fantastic! One question though: is there any way to create recipes that are specific to a particular stage? For instance, one of my stages deploys to MediaTemple’s grid server. In order to use the set of MediaTemple recipes, I need to require ‘mt-capistrano’. However, I only want to require that file IF I’m deploying to MediaTemple. If I require that file for any other deployment (i.e. deploying to a non-MediaTemple server) it will break the deployment. It would be nice to be able to specify recipes on a per Stage basis, much like you already do with configuration settings. Thanks for this!!

  14. JonathanSeptember 02, 2007 @ 10:59 PM

    @Micah:

    Recipes are at the moment per project and not per stage but I got this request several times so I guess that the next version will have something like this. Maybe also a pre-defined variable like :project and :stage so that you could use those in your custom tasks.

  15. DuncanSeptember 03, 2007 @ 09:11 AM

    Amazing work, just what I’ve been waiting for…

  16. DuncanSeptember 03, 2007 @ 09:14 AM

    Are you guys talking about this at RailsConf in Berlin in a few weeks?

  17. JonathanSeptember 03, 2007 @ 10:05 AM

    @Duncan:

    No, I will be talking about Amazon S3/EC2 but I’m sure there will be plenty of opportunity for some chats between the sessions.

  18. AlexSeptember 04, 2007 @ 10:51 AM

    Hi:

    Great work! Just simply great, now I will have more time for my PS3. Just a question how can I use this

    http://capazon.rubyforge.org/

    with webistrano. Is there any easy way to do this.. or are there any plans. My needs to S3/EC2 .. what are the plans?? Thanks again for great work!

  19. JonathanSeptember 04, 2007 @ 04:02 PM

    @Alex:

    Yes, you can use capazon as capazon is basically just some Capistrano recipes. At the moment there is no shiny support for external plugins but you can just create a Webistrano recipe and put all the capazon tasks inside it. See the second screencast on how to do this.

  20. Anis KADRISeptember 07, 2007 @ 06:06 PM

    Thanks for this great tool jonathan. I was coding something similar til I realized someone’s done it before !

    Anyway I have one question:

    How to declare variables that include other variables

    For instance:

    set variable, ”#{deploy_to}/other/path”

    webistrano escapes the ”#” which is good but how can I do what I want ?

    Cheers

    Anis

  21. JonathanSeptember 09, 2007 @ 05:37 PM

    At the moment you would need to declare this variable in a Webistrano recipe. Support for evaling variables will be in the next version of Webistrano.