Installation

Hudson has native integrations with the following OSes. See respective sections for how to make Hudson run in the background automatically:

Alternatively, if you have a servlet container that supports Servlet 2.4/JSP 2.0, such as Glassfish v2, Tomcat 5 (or any later versions), then you can run them as services, and deploy hudson.war as you would any other war file. Container specific documentation is available if you choose this route.
Top of page

Windows Installation

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. The easiest way is follow Installing Hudson as a Windows service. Alternatively, you can install a servlet container like GlassFish and Tomcat, which can run as a service by itself, and then deploy Hudson to it.

Top of page

Case Studies

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

Top of page

Execution

As mentioned above, the easiest way to execute Hudson is through the built in Winstone servlet container. You can execute Hudson like this:

$ java -jar hudson.war

Of course, you probably want to send the output of Hudson to a log file, and if you're on Unix, you probably want to use nohup:

$ nohup java -jar hudson.war > $LOGFILE 2>&1

To see Hudson, simply bring up a web browser and go to URL http://myServer:8080 where myServer is the name of the system running Hudson.

Top of page

Command Line Parameters

Hudson normally starts up using port 8080, however, if you have other web services starting up, you might find that this port is already taken, you can specify a different port by using the --httpPort=$HTTP_PORT where $HTTP_PORT is the port you want Hudson to run on. Other command line parameters include:

Command Line Parameter

Description

--javaHome=$JAVA_HOME

This tells Hudson what $JAVA_HOME to use when executing builds that require Java or Ant. This is not the Java JRE that actually executes Hudson. Default is to use the same Java JRE that was used to execute Hudson.

--httpPort=$HTTP_PORT

Runs Hudson listener on port $HTTP_PORT using standard http protocol. The default is port 8080. To disable (because you're using https), use port -1.

--httpsPort=$HTTP_PORT

Uses HTTPS protocol on port $HTTP_PORT

--argumentsRealm.passwd.$ADMIN_USER

Sets the password for user $ADMIN_USER. If Hudson security is turned on, you must log in as the $ADMIN_USER in order to configure Hudson or a Hudson project. NOTE: You must also specify that this user has an admin role. (See next argument below).

--argumentsRealm.roles.$ADMIN_USER=admin

Sets that $ADMIN_USER is an administrative user and can configure Hudson if Hudson's security is turned on. See Securing Hudson for more information.

--webroot=~/.hudson/war

Tells Hudson where to expand the war file for the bundled servlet container to use.  The default is ~/.hudson/war .

Hudson passes all command line parameters to the Winstone servlet container, so you can get more information by looking at the Winstone Command Line Parameter Reference

Hudson ignores command line parameters it doesn't understand instead of producing an error. Be careful when using command line parameters and make sure you have the correct spelling. For example, the parameter needed for defining the Hudson administrative user is --argumentsRealm and not --argumentRealm.

A very simple init script

#!/bin/sh

DESC="Hudson CI Server"
NAME=hudson
PIDFILE=/var/run/$NAME.pid
RUN_AS=hudson
COMMAND=java -jar /home/hudson/hudson.war

d_start() {
	start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND
}

d_stop() {
	start-stop-daemon --stop --quiet --pidfile $PIDFILE
	if [ -e $PIDFILE ]
		then rm $PIDFILE
	fi
}

case $1 in
	start)
	echo -n "Starting $DESC: $NAME"
	d_start
	echo "."
	;;
	stop)
	echo -n "Stopping $DESC: $NAME"
	d_stop
	echo "."
	;;
	restart)
	echo -n "Restarting $DESC: $NAME"
	d_stop
	sleep 1
	d_start
	echo "."
	;;
	*)
	echo "usage: $NAME {start|stop|restart}"
	exit 1
	;;
esac

exit 0


In Ubuntu 9.04-Server this init-script doesn't work. You have to change the start line to

  start-stop-daemon --start --quiet --background -m --pidfile $PIDFILE --chuid $RUN_AS --exec /usr/bin/java -- -jar /opt/hudson/hudson.war

Top of page