If you are running a production installation of Jenkins on a Windows box, it is essential to have it running as a Windows service. This way, Jenkins will automatically start whenever the server reboots, and can be managed using the standard Windows administration tools.
One of the advantages of running Jenkins on an application server such as Tomcat is that it is generally fairly easy to configure these servers to run as a Windows service. However, it is also fairly easy to install Jenkins as a service, without having to install Tomcat.
Jenkins has a very convenient feature designed to make it easy to install Jenkins as a Windows servers. There is currently no graphical installer that does this for you, but you get the next best thing—a web-based graphical installer.
First, you need to start the Jenkins server on your target machine. The simplest approach is to run Jenkins using Java Web Start (see Figure 3.4, “Starting Jenkins using Java Web Start” ). Alternatively, you can do this by downloading Jenkins and running it from the command line, as we discussed earlier:
C:\jenkins>
java -jar jenkins.war
This second option is useful if the default Jenkins port (8080) is already being used by another application. It doesn’t actually matter which port you use—you can change this later.
Once you have Jenkins running, connect to this server and go to the Manage Jenkins screen. Here you will find an Install as Windows Service button. This will create a Jenkins service on the server that will automatically start and stop Jenkins in an orderly manner (see Figure 3.5, “Installing Jenkins as a Windows service” ).
Jenkins will prompt you for an installation directory. This will be
the Jenkins home directory (
JENKINS_HOME
). The default
value is the default
JENKINS_HOME
value: a directory
called
.jenkins
in the current user’s
home directory. This is often not a good choice for a Windows
installation. When running Jenkins
on Windows XP, you should avoid
installing your Jenkins home directory anywhere near your
C:\\Documents And Settings
directory—not only
is it a ridiculously long name, the spaces can wreak havoc with your
Ant
and Maven builds and any
tests using classpath-based resources. It is
much
better to use a short and sensible name such as
C:\Jenkins
. The Vista and Windows 7 home
directory paths like
C:\Users\john
will also work fine.
A short home directory path is sometimes required for other reasons,
too. On many versions of Windows (Windows XP,
Windows Server 2003,
etc.),
file path lengths are limited to around 260 characters. If you combine a
nested Jenkins work
directory and a deep class path, you can often
overrun
this, which will result in very obscure build errors. To
minimize the
risks of over-running the Windows file path limits, you need to
redefine
the
JENKINS_HOME
environment variable to point to a
shorter path, as we discussed above.
This approach won’t always work with Windows Vista or Windows 7. An
alternative strategy is to use the
jenkins.exe
program that the Web Start
installation process will have installed in the directory you specified
above. Open the
command line prompt as an administrator (right-click, “Run
as administrator”) and run the
jenkins.exe
executable with the
install
option:
C:\Jenkins>
jenkins.exe install
This basic installation will work fine in a simple context, but you
will often need to fine-tune your service. For
example, by default,
the
Jenkins service will be running under the local System account. However,
if you are using
Maven, Jenkins will need an
.m2
directory and a
settings.xml
file in the home directory.
Similarly, if you are using Groovy, you might need a
.groovy/lib
directory. And so on. To allow
this, and to make testing your Jenkins install easier, make sure you run
this service
under a real user account with the correct development
environment set up (see
Figure 3.6, “Configuring the Jenkins Windows Service”
). Alternatively, run the
application as the system user, but use the System Information page in
Jenkins to check the
/jenkins-guide-complet
directory, and place any files that must be placed in the user home
directory here.
You configure the finer details of the Jenkins service in a file
called
jenkins.xml
, in the same
directory as your
jenkins.war
file.
Here you can configure (or reconfigure) ports, JVM options, an the
Jenkins
work directory. In the following
example, we give Jenkins a bit more
memory and get it to run on port 8081:
<service> <id>jenkins</id> <name>Jenkins</name> <description>This service runs the Jenkins continuous integration system </description> <env name="JENKINS_HOME" value="D:\jenkins" /> <executable>java</executable> <arguments>-Xrs -Xmx512m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8081 --ajp13Port=8010</arguments> </service>
Finally, if you need to uninstall the Jenkins service, you can do
one of two things. The simplest is to run the
Jenkins executable with
the
uninstall
option:
C:\jenkins>
jenkins.exe uninstall
The other option is to use the Windows
service tool
sc
:
C:>
sc delete jenkins