By arungupta on Jun 17, 2008
|Kohsuke (aka Mr. Hudson) and I attended The Server Side Java Symposium, Las Vegas in Mar 2008. In one of the evenings we spent togehter, I decided to pick Kohsuke's brain on top 10 features of Hudson. My notes 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 ...
- Ease of
installation & use - Hudson is downloaded as a single
WAR and run just using "java -jar hudson.war" - no additional
configuration or container. It can also be started by clicking on 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 Hudson Docs.
- Fairly extensive ecosystem of plugins - You can easily write plugins to support tools/processes in your team. And after you contribute, they can be used by others as well.
- Update Center - for finding and installing plugins
- Source Code Control Plugins: Visual Source Safe, Git, Perforce and many others.
- Most of the plugins are small and can be created in spare time.
- Maven support for generating plugin templates. Read more about developing plugins in Extend Hudson.
- 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.
- Inter team support - Multiple teams working together with an inter-dependency require 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 Finger printing to simplify this.
- Open source - Hudson is fully open-sourced under the MIT License.
- 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 required.
- Extensive tools outside Hudson - This is possible because of programmable control interface. Some of the examples are:
- Hudson Tracker & Tray Application - Small application that sits in your task tray and monitor Hudson builds
- Trac plugin - Creates links from Hudson projects to Trac instances.
- Firefox Build Monitor plugin - Displays Hudson orbs on Firefox status bar panel to indicate the build status
- Permalink support - 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.
- Localization - Localization is available in English, Japanese, Gemany, French, Turkish, Brazilian, Portugese, Russian. You can easily create your own localization bundle by following these instructions. There is even an IntelliJ plugin to internationalize existing code.
- Building blocks - Hudson builds on general-purpose building blocks which can be used for other projects as well:
- Stapler -
- URL binding of domain objects
- JSON & XML generation
- Much of the implementation of remoting is in Stapler - take POJO and convert into XML
- IntelliJ plugin for Stapler
- View tier is pluggable - Hudson uses Jelly.
- Remote Access API
- Localizer - small runtime library to choose the locale with IDE plugin for i18n
Download Hudson now!
Technorati: hudson top10 glassfish