Top 10 features of Hudson

Guest Author

style="width: 140px; height: 140px;" alt=""
(aka Mr. Hudson) and I attended href="http://javasymposium.techtarget.com/lasvegas/index.html">The
Server Side Java Symposium, Las Vegas in href="http://blogs.sun.com/arungupta/entry/slides_demos_for_rails_glassfish">Mar
2008. In one of the evenings we spent togehter, I decided to
pick Kohsuke's brain on top 10 features of href="http://hudson.dev.java.net/">Hudson. My
were lost but luckily I found them so this article is slightly dated
but most of the content is still very much valid. Newer features have
been added since then anyway.

Here you go ...
  1. Ease of
    installation & use
    - Hudson is downloaded as a href="https://hudson.dev.java.net/servlets/ProjectDocumentList?folderID=2761">single
    WAR and run just using "java -jar hudson.war" - no additional
    configuration or container. It can also be started by clicking on href="https://hudson.dev.java.net/hudson.jnlp">this link.
    There has been emphasis on a single web app with no need to run a
    Continuous Integration (CI) server or client. If started using "java
    -jar hudson.war", then the default page looks like:


    More details about ease of installation & use are available in href="http://hudson.gotdns.com/wiki/display/HUDSON/Installation+and+Execution">Hudson
  2. Fairly
    extensive ecosystem of
    - You can easily write plugins to support tools/processes in your team.
    And after you contribute, they can be used by others as well.
    1. href="http://weblogs.java.net/blog/kohsuke/archive/2008/06/hudson_1222_upd.html">Update
      Center - for finding and installing plugins
    2. Source Code Control Plugins: href="http://hudson.gotdns.com/wiki/display/HUDSON/Visual+SourceSafe+Plugin">Visual
      Source Safe, href="http://hudson.gotdns.com/wiki/display/HUDSON/Git+Plugin">Git, href="http://hudson.gotdns.com/wiki/display/HUDSON/Perforce+Plugin">Perforce
      and href="http://hudson.gotdns.com/wiki/display/HUDSON/Plugins#Plugins-Sourcecodemanagement">many
    3. Most of the plugins are small and can be created in spare
    4. href="https://hudson.dev.java.net/nonav/maven-hpi-plugin/">Maven
      support for generating plugin templates. Read more about
      developing plugins in href="http://hudson.gotdns.com/wiki/display/HUDSON/Extend+Hudson">Extend
  3. Distributed
    build support
    - This lets you use those empty sitting
    machines in a master/slave configuration and churn out the builds.
    Hudson "baby sits" the slave and performs some non-trivial work to
    monitor it such as clock synchronization, disk space monitoring and
    restarting the slave if it gets disconnected.
  4. Inter team
    - Multiple teams working together with an
    inter-dependency require href="http://hudson.gotdns.com/wiki/display/HUDSON/Terminology">downstream
    projects to be automatically built. A complete chain of projects with
    upstream/downstream can be easily configured. Such projects also need
    to keep track of which version of this is used by which version of
    that. Hudson uses href="http://hudson.gotdns.com/wiki/display/HUDSON/Fingerprint">Finger
    printing to simplify this.
  5. Open source
    - Hudson is fully open-sourced under href="http://www.opensource.org/licenses/mit-license.php"> style="text-decoration: underline;">the MIT
  6. Maturity
    - 226th release was released on 6/17 and never lost data compatbility
    even once. The migration from older to newer version is seamless, it's
    basically just redeploying the WAR and there is no extra configuration
  7. Extensive
    tools outside Hudson
    - This is possible because of
    programmable control interface. Some of the examples are:
    1. href="http://hudson.gotdns.com/wiki/display/HUDSON/hudsonTracker">Hudson
      Tracker & href="http://hudson.gotdns.com/wiki/display/HUDSON/Hudson+Tray+Application">Tray
      Application - Small application that sits in your task tray
      and monitor Hudson builds
    2. href="http://hudson.gotdns.com/wiki/display/HUDSON/Trac+Plugin">Trac
      plugin - Creates links from Hudson projects to href="http://trac.edgewall.com/">Trac instances.
    3. href="http://hudson.gotdns.com/wiki/display/HUDSON/Firefox+Add-on+Build+Monitor">Firefox
      Build Monitor plugin - Displays Hudson orbs on Firefox status
      bar panel to indicate the build status
  8. Permalink
    - Hudson provides easily readable URLs for most of
    the pages such as "last successful build", "promoted build". These URLs
    can be used linked from anywhere.
  9. Localization
    - Localization is available in English, Japanese, Gemany, French,
    Turkish, Brazilian, Portugese, Russian. You can easily create your own
    localization bundle by following href="http://hudson.gotdns.com/wiki/display/HUDSON/Internationalization">these
    instructions. There is even an href="http://hudson.gotdns.com/wiki/display/HUDSON/Internationalization#Internationalization-StaplerpluginforIntelliJIDEA">IntelliJ
    plugin to internationalize existing code.
  10. Building
    - Hudson builds on general-purpose building blocks
    which can be used for other projects as well:
    1. Stapler
      1. URL binding of domain objects
      2. JSON & XML generation
      3. Much of the implementation of remoting is in Stapler -
        take POJO and convert into XML
      4. IntelliJ plugin for Stapler
      5. View tier is pluggable - Hudson uses Jelly.
    2. href="http://hudson.gotdns.com/wiki/display/HUDSON/Remote+access+API">Remote
      Access API
    3. Localizer
      - small runtime library to choose the locale with
      IDE plugin for i18n

href="http://java.sun.com/javaone/sf/2008/articles/2008dukeschoiceawards.jsp"> style="border: 0px solid ; width: 141px; height: 130px;" alt=""

So you still think you need another Continuous Integration tool ?

Hudson now!

Technorati: hudson
top10 href="http://technorati.com/tag/glassfish">glassfish

Join the discussion

Comments ( 1 )
  • 手机魔卡 Wednesday, June 18, 2008


Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.