Hudson is a continuous integration (CI) tool written in Java, which runs in a servlet container, such as Apache Tomcat or the GlassFish application server. It supports SCM tools including CVS, Subversion, Git, Perforce and Clearcase and can execute Apache Ant and Apache Maven based projects, as well as arbitrary shell scripts and Windows batch commands. The primary developer of Hudson was Kohsuke Kawaguchi, who worked for Sun Microsystems at the time. Released under the MIT License, Hudson is free software. The Hudson project is supported by Oracle Corporation.
Builds can be started by various means, including scheduling via a cron-like mechanism, building when other builds have completed, and by requesting a specific build URL.
During recent years Hudson has become a popular alternative to CruiseControl and other open-source build servers. At JavaOne conference in May 2008, it was the winner of Duke's Choice Award in the Developer Solutions category.
Hudson is extensible through a plugin architecture, and many plugins have been made publicly available which extend it far beyond purely being a build tool for Java projects. Plugins are available for integrating Hudson with most version control systems and bug databases. Many build tools are supported via their respective plugins. Plugins can also change the way Hudson looks or add new functionality. Builds can generate test reports in various formats (JUnit is supported out-of-the-box, others via plugins) and Hudson can display the reports and generate trends and render them in the GUI.
"Continuous Integration (CI) is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.