Skip to end of metadata
Go to start of metadata

Table of Contents

System requirement

Jenkins requires Java7 or above to function. Java8 is recommended. Jenkins requires a fair amount of memory to operate well. Smaller installations should start around 256MB-1GB.

Unix/Linux Installation

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

Alternatively, if you have a servlet container that supports Servlet 3.1, such as Glassfish v4, Tomcat 8 (or any later versions), then you can run them as services, and deploy jenkins.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 it is good to run Jenkins as a service so it starts up automatically without requiring a user to log in. The easiest way is to run the Windows installer, linked from Jenkins' homepage. This also has the advantage of being easier to automate.

The manual way is to follow Installing Jenkins 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 Jenkins to it.

Since Jenkins was written to work on unix-like platforms, some parts assume the presence of unix-utilities. It is advised to install these as well on Windows. Install UnxUtils (this includes a shell that seems to work with forward and backwards slashes and does globbing correctly)(UnxUtils does not download), put it in the Windows PATH , and copy sh.exe to C:\bin\sh.exe (or whichever drive you use) to make shebang lines work. This should get you going. If UnxUtils gives you trouble (Fork Failed Errors), try Win-Bash.

Top of page

Installation Wizard

TODO. This feature is under development.

Jenkins Offline Installation

See details.

Case Studies

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

Top of page

  • No labels


  1. Anonymous

    Regarding Unix/Linux, it would be nice to easily find a start/stop script to deploy under /etc/rc* so it is ensured Hudson starts after a reboot.

  2. Anonymous

    I used a simple script in /etc/rc.d/init.d in conjuction with the Fedora "chkconfig" command to create a linux service. Here's the script including the chkconfig parms included as comments. Do a "man ckkconfig" for more details on chkconfig. #!/bin/bash # # hudson This shell script starts the Hudson continuous integration # service. # # chkconfig: 2345 64 36 # description: The Hudson CI server # processname: mysqld java -jar /root/hudson/hudson.war --httpPort=18080 --ajp13Port=18009 >/root/huds on/hudson.log 2>&1

    1. Anonymous

      I've made some minor and not so minor changes to the above init.d script - here's the new (and more readable) version:

      #!/bin/bash # # hudson This shell script starts the Hudson continuous
      integration service. # chkconfig: 2345 64 36 # description: The Hudson CI server . /etc/profile nohup java -jar /root/hudson/hudson.war --httpPort=18080 --ajp13Port=18009 >/root/huds on/hudson.log 2>&1 &

      1. Anonymous

        Here's an even more elaborate init.d script:

        # Startup script for Hudson
        # chkconfig: - 84 16
        # description: Hudson CI server
        # Source function library.
        . /etc/rc.d/init.d/functions
        [ -z "$JAVA_HOME" -a -x /etc/profile.d/ ] && . /etc/profile.d/
        export HUDSON_HOME
        pid_of_hudson() {
            ps auxwww | grep java | grep hudson | grep -v grep | awk '{print $2}'
        start() {
            [ -e "$LOG" ] && cnt=`wc -l "$LOG" | awk '{ print $1 }'` || cnt=1
            echo -n $"Starting hudson: "
            cd "$HUDSON_HOME"
            nohup java -jar "$WAR" --httpPort=-1 --ajp13Port=8010 --prefix=/hudson >> "$LOG" 2>&1 &
            while { pid_of_hudson > /dev/null ; } &&
                  ! { tail +$cnt "$LOG" | grep -q 'Winstone Servlet Engine .* running' ; } ; do
                sleep 1
            pid_of_hudson > /dev/null
            [ $RETVAL = 0 ] && success $"$STRING" || failure $"$STRING"
            [ $RETVAL = 0 ] && touch "$LOCK"
        stop() {
            echo -n "Stopping hudson: "
            [ -n "$pid" ] && kill $pid
            while [ $RETVAL = 0 -a $cnt -gt 0 ] &&
                  { pid_of_hudson > /dev/null ; } ; do
                sleep 1
            [ $RETVAL = 0 ] && rm -f "$LOCK"
            [ $RETVAL = 0 ] && success $"$STRING" || failure $"$STRING"
        status() {
            if [ -n "$pid" ]; then
                echo "hudson (pid $pid) is running..."
                return 0
            if [ -f "$LOCK" ]; then
                echo $"${base} dead but subsys locked"
                return 2
            echo "hudson is stopped"
            return 3
        # See how we were called.
        case "$1" in
            echo $"Usage: $0 {start|stop|restart|status}"
            exit 1
        exit $RETVAL
        1. Unknown User (joa23)

          Attention this script at least in my case overwrote the PATH variable, what caused my perforce plugin to not find the p4 executable.
          So you want to add a line in the script to add the p4 executables to the path again.

  3. Anonymous

    To Anon of the Jan 27 2008 post :

     That script works great, thanks for that (smile)


  4. Unknown User (mark.wolff)

    I have hudson running as a widows service and now I need to change the port number.  On previous installs, I fixed this before I set up the windows service.  Can I change the port number now?

    1. You can configure that in hudson.xml

      Look for httpPort in the <arguments> line.

  5. Unknown User (hmaass)

    Another alternative for the init script is the Tanuki Service Wrapper. They already provide an example for hudson:

  6. I am using Hudson on Windows XP 64-bit.  I have been using version 1.320 and I tried to upgrade to 1.352.  Unfortunately when I upgraded to 1.352, I was unable to login to Hudson.  I am running Hudson as a Windows service. 

    Here is the procedure that I followed:

    1. Stop the Windows service for Hudson

    2. Copy the WAR file to c:\hudson

    3. Start the Windows service

    After doing this and not being able to login, I followed the same procedure to roll back to 1.320 and was able to login again.

  7. Hi,

    Am new to CI and jenkin's too,  when i hit the test drive... the jenkin's console says "Jenkins is fully up and running" and when i try to hit the http://localhost:8080/ its showing connection refused. can anyone help me with this...

    Am using windows machine. 

    do i need the tomcat to be installed in my machine?? or i can't able to launch the test drive with windows machine.  Thanks in advance

  8. On windows, using the installer is now the best practice, per the home page. I added that note to the page, above but it might need time to be posted.

  9. Jenkins Runner can also be used to manage jenkins in any environment

  10. I've managed to install Jenkins and other software in a CentOS 7 virtual machine provisioned into AWS EC2 using a Vagrant script with the AWS provider.

    My experiences are written up under

  11. I added my case study titled how I setup git, gerrit, nginx, jenkins for continuous delivery of cpp builds and tests. Now some person has deleted that page.  I came back here to refer what I did before and its gone. That will teach me to share on a public site.  I cant even find my deleted page.  I wont be contributing here anymore thats for sure.  And the page is not even available in wayback machine. This site is not available on Thats sad. I should have kept a copy of my notes.

    1. OK. I restored my page and got a copy.  I created a separate page for the bozo who shat on my page.  Everything is fine again.

  12. Just a note on using Jenkins on AWS behind an ELB (Elastic Load Balancer).  In my case I had my master node behind an ELB with slave nodes spread out over other VPCs in other regions.  Every minute or so my slaves would all disconnect and reconnect with an " unexpected stream termination" error.  It turns out that ELBs don't really like long running connections (such as the one between master <--> slave) and they have an Idle Timeout setting that defaults to 60 seconds.  After the timeout occurs with no traffic between the systems the ELB closes the connection.  Jenkins notices the dropped connection, throws a EOFException, and reconnects.  This happens again, and again, and again.

    My solution was to increase the ELB Idle Timeout to 3600 (the maximum) seconds.  Hopefully, there will be traffic between the master and slave which will reset the clock on the timeout.  I think a better solution might be to have some sort of keepalive for slaves.

  13. How can I uninstall Jenkins of 2.7.4 on Mac?

    Someone said execute  '/Library/Application Support/Jenkins/Uninstall.command', but I can't find this file.

    Also can't find /Library/LaunchDaemons/org.jenkins-ci.plist.