Dashboard > hudson > Home > Meet Hudson
  hudson Log In | Sign Up   View a printable version of the current page.  
  Meet Hudson
Added by Kohsuke Kawaguchi, last edited by Anonymous on May 07, 2008  (view change)
Labels: 
(None)

What is Hudson?

Hudson monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Hudson focuses on the following two jobs:

  1. Building/testing software projects continuously, just like CruiseControl or DamageControl. In a nutshell, Hudson provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. The automated, continuous build increases the productivity.
  2. Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those that are run on a remote machine. For example, with cron, all you receive is regular e-mails that capture the output, and it is up to you to look at them diligently and notice when it broke. Hudson keeps those outputs and makes it easy for you to notice when something is wrong.

Features

Hudson offers the following features:

  1. Easy installation: Just java -jar hudson.war, or deploy it in a servlet container. No additional install, no database.
  2. Easy configuration: Hudson can be configured entirely from its friendly web GUI with extensive on-the-fly error checks and inline help. There's no need to tweak XML manually anymore, although if you'd like to do so, you can do that, too.
  3. Change set support: Hudson can generate a list of changes made into the build from CVS/Subversion. This is also done in a fairly efficient fashion, to reduce the load of the repository.
  4. Permanent links: Hudson gives you clean readable URLs for most of its pages, including some permalinks link "latest build"/"latest successful build", so that they can be easily linked from elsewhere.
  5. RSS/E-mail/IM Integration: Monitor build results by RSS or e-mail to get real-time notifications on failures.
  6. After-the-fact tagging: Builds can be tagged long after builds are completed
  7. JUnit/TestNG test reporting: JUnit test reports can be tabulated, summarized, and displayed with history information, such as when it started breaking, etc. History trend is plotted into a graph.
  8. Distributed builds: Hudson can distribute build/test loads to multiple computers. This lets you get the most out of those idle workstations sitting beneath developers' desks.
  9. File fingerprinting: Hudson can keep track of which build produced which jars, and which build is using which version of jars, and so on. This works even for jars that are produced outside Hudson, and is ideal for projects to track dependency.
  10. Plugin Support: Hudson can be extended via 3rd party plugins. You can write plugins to make Hudson support tools/processes that your team uses.

Introductory Articles

Test Drive

Launch Hudson through Java Web Start for a test drive. Once it launches, visit http://localhost:8080/ to get to the dashboard. Any configuration that you do with this Hudson will be stored in ~/.hudson, so your data will survive through Hudson process restart.

Installation

To run Hudson, minimally you need to have J2SE 1.5 or later. After you download hudson.war, you can launch it by executing java -jar hudson.war. This is basically the same set up as the test drive, except that the output will go to console, not to a window.

Alternatively, if you have a servlet container that supports Servlet 2.4/JSP 2.0 or later, such as Glassfish, Tomcat 5, JBoss, Jetty 6, etc., then you can deploy hudson.war as you would any WAR file. See this document for more about container-specific installation instruction.

Once the war file is exploded, run chmod 755 hudson in the exploded hudson/WEB-INF directory so that you can execute this shell script.

If you're running on Windows you might want to run Hudson as a service so it starts up automatically without requiring a user to log in. One way is to first install Tomcat as a service and then deploy Hudson to it in the usual way.  Another way is to use the Java Service Wrapper. However, there may be problems using the service wrapper, because the Main class in Hudson in the default namespace conflicts with the service wrapper main class. Deploying inside a service container (Tomcat, Jetty, etc.) is probably more straightforward, even for developers without experience with such containers.

Also, see how other people are deploying Hudson to get some idea of how to make it fit your environment.

Since this covers launching Hudson, and not just installing it. Why don't we give a few of the more "key" command line parameters to use here. For example:

  • --httpPort=$HTTP_PORT
  • --javaHome=$JAVA_HOME

And maybe a few others.

Plus, a reminder that the command line parameters are not checked too carefully, so verify your spelling because if you misspell something, it will simply ignore that parameter.

Posted by Anonymous at Oct 29, 2007 08:28

It would be useful to know more about the non-technical details of the projects hudson has been used to build. For example, are the referenced projects 1, 10, 50, 100 or 1000 developers?

I'm investigating using hudson to build 3-4 projects each with 30-40 developers. What kind of issues does this raise?

Mathew Butler

mathewbutler "at" yahoo "dot" com

Posted by Anonymous at Dec 04, 2007 03:14

I find the Benefits section at best confusing, at worst alarming. Are you saying that you commit code to source control when you have no idea if it passes unit tests or even builds on your own machine? Or does Hudson prevent anything from being committed to version control unless it first builds and tests, as TeamCity does?

Posted by Anonymous at Dec 05, 2007 05:27

I think the benefits section is fine. I did not find it confusing when I was evaluating Hudson. As the Benefits section suggests, you might not want to run all unit tests before committing, if you are fairly confident the code is OK and the tests take a long time to run.

In answer to your question, out of the box Hudson does not prevent you from committing if the code does not compile or does not pass unit tests. You could create that kind of setup if you wanted.

Hudson just polls your repository and then builds and reports. And its so easy to get set up. The Maven integration is good. That's why I use Hudson.

Posted by Anonymous at Dec 11, 2007 18:17

I have a subverion repository which a master Makefile.  I put in  "make clean; make lib" in the 'Execute Shell' parameters, but whenever I try to build, it says "No rules to make clean."  Anyone know how I can configure hudson to run make commands?

Posted by Anonymous at Dec 21, 2007 09:41
Site running on a free Atlassian Confluence Open Source Project License granted to Hudson. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.4.5 Build:#708 Apr 12, 2007) - Bug/feature request - Contact Administrators