Hudson

Hudson ist ein Software-Tool zur Automatisierung von Build-Prozessen, das dem Ansatz der permanenten (auch: kontinuierlichen) Integration folgend, im Sinne einer sogenannten Continuous Integration Engine agiert. Unter permanenter (kontinuierlicher) Integration versteht man in der Entwicklung von Software einen Prozess, der die regelmäßige Transformation von Quell-Dateien in eine ausführbare Form und deren Test beschreibt. Hudson ist plattformunabhängig, in der Programmiersprache Java implementiert und benötigt daher zur Ausführung ein Java Development Kit (JDK), sofern man alle Funktionen nutzen möchte. Die Entwicklung von Hudson wurde maßgeblich beeinflusst von Kohsuke Kawaguchi. Unter dem u.g. Link steht wöchentlich eine neue Version als Open Source zur Verfügung. Ein alternatives Werkzeug ist CruiseControl.


Hudson ist ein webbasiertes System und läuft in einem Servlet-Container. Dazu kann ein frei verfügbarer Servlet-Container wie beispielsweise Tomcat oder auch der integrierte Servlet-Container Winstone eingesetzt werden. Durch Hudson ermöglicht die Integration mit Build-Tools wie Apache Ant oder Maven und Versionskontrollsystemen wie Concurrent Version System (CVS) und Subversion. Darüber hinaus werden Testtools wie JUnit und Emma unterstützt. Durch die Plug-In-Architektur können aber auch andere Compiler beispielsweise für Hypertext Preprocessor (PHP), Ruby oder .NET-basierten Quellcode über entsprechende Plug-Ins gesteuert werden.

Steuerung von Hudson durch andere Programme

Zur externen Steuerung durch andere Programme verfügt Hudson über eine Programmierschnittstelle, die als Representational State Transfer (REST) bezeichnet wird, wonach jede Ressource mit einer eigenen Uniform Resource Identifier (URI) anzusprechen ist. Dadurch dass Hudson auf einer Plug-In-Architektur aufsetzt, können weitere Funktionen auf einfache Art hinzugefügt werden. Eine aktive Community unterstützt diesen Weg, indem regelmäßig Plug-Ins mit weiterer Funktionalität zur Verfügung gestellt werden.

Die Verwendung von Automatisierungs-Werkzeugen wie Hudson oder CruiseControl setzt die Integration mit einem zentralen Versionskontrollsystem voraus. Hudson unterstützt dann den Ansatz der kontinuierlichen Integration über das automatische Starten von Build-Tools hinaus, indem beispielsweise Software-gesteuert festgestellt werden kann, ob in das zentrale Repository Revisions-Änderungen (Change Sets) eingestellt worden sind, um dann den Build-Prozess zu starten. Im Anschluss daran, werden die Ergebnisse entsprechend analysiert und dokumentiert, und auf Wunsch per Mail an die einzelnen Mitglieder des Teams verteilt.

Der regelmäßige Einsatz von Hudson kann auch positive Auswirkungen auf die Qualität von Software haben, indem durch Hudson ein kontinuierlicher Build- sowie integrierter Test-Prozess angestoßen wird. Beispielsweise ist das bei den sogenannten Nightly Builds (nächtlicher Build-Prozess) üblich, die jeweils aktuellsten Versionen einer Software jede Nacht aus dem Versionsverwaltungssystem zu holen, und auf Basis dessen eine Anwendung zu generieren, diese anschließend automatisiert zu installieren (Deployment-Prozess) und die Ausführung zu starten.

http://hudson.dev.java.net/

http://hudson-ci.org

Informationen zum Artikel
Deutsch: Hudson
Englisch:
Veröffentlicht: 03.11.2013
Wörter: 436
Tags: #Entwicklung, Codierung
Links: Anschluss, Ant (another neat tool), Apache, API (application programming interface), Automation