Child pages
  • Installing Jenkins on Red Hat distributions
Skip to end of metadata
Go to start of metadata

On RPM-based distributions, such as Red Hat Enterprise Linux (RHEL), CentOS, Fedora or Scientific Linux, you can install Jenkins through yum.

Recent versions are available in a YUM repository.

Installation

Add the Jenkins repository to the yum repos, and install Jenkins from here.

Installation of a stable version

There is also a LTS YUM repository for the LTS Release Line

Installation of Java

Jenkins requires Java in order to run, yet certain distros don't include this by default. To install the Open Java Development Kit (OpenJDK) run the following:

sudo yum install java

Note: If running CentOS, ensure you follow the guide below.

Start/Stop

  • sudo service jenkins start/stop/restart
  • sudo chkconfig jenkins on

Note: if you get the following error message, ensure that Java has been installed:

Starting jenkins (via systemctl):  Job for jenkins.service failed. See 'systemctl status jenkins.service' and 'journalctl -xn' for details.
                                                           [FAILED]

What does this package do?

  • Jenkins will be launched as a daemon on startup. See /etc/init.d/jenkins for more details.
  • The 'jenkins' user is created to run this service. If you change this to a different user via the config file, you must change the owner of /var/log/jenkins, /var/lib/jenkins, and /var/cache/jenkins.
  • Log file will be placed in /var/log/jenkins/jenkins.log. Check this file if you are troubleshooting Jenkins.
  • /etc/sysconfig/jenkins will capture configuration parameters for the launch.
  • By default, Jenkins listen on port 8080. Access this port with your browser to start configuration.  Note that the built-in firewall may have to be opened to access this port from other computers.  (See http://www.cyberciti.biz/faq/disable-linux-firewall-under-centos-rhel-fedora/ for instructions how to disable the firewall permanently)
  • A Jenkins RPM repository is added in /etc/yum.repos.d/jenkins.repo

Disable the firewall

firewall-cmd --permanent --new-service=jenkins
firewall-cmd --permanent --service=jenkins --set-short="Jenkins Service Ports"
firewall-cmd --permanent --service=jenkins --set-description="Jenkins service firewalld port exceptions"
firewall-cmd --permanent --service=jenkins --add-port=8080/tcp
firewall-cmd --permanent --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
firewall-cmd --list-all

Important Note on CentOS Java

Jenkins requires Java in order to run, however yum install jenkins does not enforce that java is already installed. Check to make sure that you already hava java installed by running java -version. To further make things difficult for CentOS users, the default CentOS version of Java is not compatible with Jenkins. Jenkins typically works best with a Sun implementation of Java, which is not included in CentOS for licensing reasons.

If you get output similar to the following, it means you're using the default (GCJ) version of Java, which will not work with Jenkins:

java -version
java version "1.7.0"
gij (GNU libgcj) version 4.4.6 20110731 (Red Hat 4.4.6-3)

To correct this, you may need to remove the GCJ version of Java and install a Sun-compatible version.

If you received the above output, uninstall the default java:

 yum remove java

Then after you've uninstalled Java (or if you didn't have Java installed at all to begin with). You need to install a Sun-compatible version of Java. The easiest approach is using OpenJDK, which is available through the EPEL repository (alternatively you may install an official RPM directly from Oracle). To install OpenJDK run the following:

 yum install java-1.8.0-openjdk

Depending on your version of CentOS, the package name for OpenJDK may differ. Use yum search openjdk to check for the name of the package. If OpenJDK is not found at all through yum, you probably need to install the EPEL yum repository. After installation, you should be able to get the following output for java -version:

java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
  • No labels

19 Comments

  1. ---Can we get someone who knows how to run a yum repo to run createrepo to rebuild the repository metadata? Maybe in a cron job? Thanks.---

    Nevermind, someone did it.

  2. You need

    yum install java-1.7.0-openjdk

    instead of

    yum install java-1.6.0-openjdk

    with 1.6.0 Jenkins wont start

    # service jenkins start
    Starting Jenkins Jenkins requires Java7 or later, but you are running 1.6.0_35-b35 from /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.35.x86_64/jre
    java.lang.UnsupportedClassVersionError: 50.0
    at Main.main(Main.java:90)

  3. hi,

    we done the first two steps of installation

    for the third step, i imported the rpm package to the server.

    i am using the redhat version as Red Hat Enterprise Linux ES release 4 (Nahant Update 7)

    when we tried to install the jenkins , we are getting the following error as below

    please suggest for this issue
    error:
    [root@ptaf11-labvm1 testtool]# sudo yum install jenkins-1.618-1.1.noarch.rpm

    Setting up Install Process

    Setting up Repos

    jenkins                   100% |=========================|  951 B    00:00

    http://gospodin.tecnomen.com/rhel/4ES/os/i386/repodata/repomd.xml: [Errno 4] IOError: <urlopen error (110, 'Connection timed out')>

    Trying other mirror.

    Cannot open/read repomd.xml file for repository: base

    failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try.

    [root@ptaf11-labvm1 testtool]# sudo yum install jenkins-1.618-1.1.noarch.rpm
    Setting up Install Process
    Setting up Repos
    jenkins                   100% |=========================|  951 B    00:00http://gospodin.tecnomen.com/rhel/4ES/os/i386/repodata/repomd.xml: [Errno 4] IOError: <urlopen error (110, 'Connection timed out')>
    Trying other mirror.
    Cannot open/read repomd.xml file for repository: base
    failure: repodata/repomd.xml from base: [Errno 256] No more mirrors to try.

    1. For one your key does not match the download.

      Try:

      sudo rpm --import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.k

      And secondly are you using a proxy?

  4. The default JENKINS_HOME directory will be in /var/lib/jenkins.

  5. Can anyone please share how to install jenkins as a service from Jenkins.war file. I am trying to install it on a Rhel 6.5 machine which sits behind a corporate firewall, so not able to access internet freely.

    So if anyone could share how to install jenkins as service from its war file, it would be really helpful.(Note: I want to use the default Jetty server of jenkins rather than using tomcat to deploy the war file)

  6. Unfortunately, installation seemed successful until I went to access the GUI http://:8080 and page doesn't open in browser.   Any help would be greatly appreciated. 

    JenkinsLog:

    WARNING:: Upgrade Jenks. Failed to Update the default Update Site 'default'. Plugin upgrades may fail.....

    1. Hi, I have the same issue. Were you able to find a fix? Thank you.

  7. I upgraded a Jenkins 1.6 server today to LTS 2.7.4.  It wasn't quite as described above. 

    The steps I followed were:

    1. rm -rf /var/cache/yum/x*/7/jenkins
    2. service jenkins stop
    3. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo
    4. sudo rpm --import http://pkg.jenkins.io/redhat-stable/jenkins.io.key
    5. service jenkins start

    Not sure if these are exactly right, I'm not really a sysadmin.  But, after some problems and working through the messages this is what I hit on that work.  I really wanted to have the LTS release, not the latest build.  I had to remove the cache (there may be a better way to clear it) to get yum to install 2.7.4 instead of 2.22.

    All this was on a CentOS 7.2 machine.

  8. We changed the user in /etc/sysconfig/jenkins per below instruction and also chown -R for all 3 locations. 

    • The 'jenkins' user is created to run this service. If you change this to a different user via the config file, you must change the owner of /var/log/jenkins, /var/lib/jenkins, and /var/cache/jenkins.

    We are unable to launch jenkins after this. Error "Starting Jenkins runuser: cannot set groups: Operation not permitted"

    Anyone had this issue? While it does seem to be permission issue, not sure if which permission needs to be granted for "new" user here.
    Starting Jenkins runuser: cannot set groups: Operation not permitted

  9. Hi ,
    I am trying to follow the above steps to install jenkins on Oracle Enterprise Linux7 OS.
    When I try commands:
    sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
    or
    sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
    I get connection timeout error.
    Resolving pkg.jenkins-ci.org (pkg.jenkins-ci.org)... 52.202.51.185
    Connecting to pkg.jenkins-ci.org (pkg.jenkins-ci.org)|52.202.51.185|:80... failed: Connection timed out.
    Retrying
    What am I suppose to do now?
    Any help is appreciated!
    Thanks

  10. Was there a major change in yesterday's 2.80 RPM-release? I launched a new Jenkins installation and, instead of the first-login prompting me for the string from the initialAdminPassword file, it let me straight into the application's privileged interface with no credential-prompting. When I explicitly rolled back to 2.79, the expected "secured by default" (credentialed) login was in place.

    Fortunately, this was a pre-upgrade testing installation (in an isolated network) and not internet-exposed, but it meant we couldn't take the chance upgrading our production Jenkins from 2.76 to 2.80.

  11. Hi, I have installed jenkins as per the given instruction in el7.x86_64 and tried launching jenkins with http://localhost:8080; But i dont have any default user id to login and secrets folder for InitialAdminpassword is not created under /root/.jenkins/

    Could you please advice me on this? Thanks.

    1. Ever since I filed the bug for 2.80, we've been experiencing intermittent issues with the `initialAdminpassword` file getting created. When it first cropped up, again, we had been running for a few weeks on 2.82 and were attempting to install 2.89 on a parallel system. We got the no `initialAdminpassword` file and assummed there'd simply been another regression. So, we blew the system away and did an explicit install of 2.88 with the intention of upgrading that install to 2.89 (or normal "upgrade" method is parallel deployment with a migration of data from old Jenkins install to new). That upgrade worked as expected, so we re-ran the procedures to verify process-validity for the Ops staff to execute. This time, 2.88 failed to create the `initialAdminpassword` file ...but a straight install of 2.89 worked. So, we did four more installs straight to 2.89: three failed; one succeeded. Similar results when 2.90 became available the next day.

      Didn't update this bug or file a new one since it wasn't 100% reproducible nor manifesting at a specific version-level. Best I can suggest is keep reinstalling until it works as expected. Open a bug if you can find something repeatable you can identify.

  12. Hi Thomas, the secrets folder and initialAdminpassword file has been created in /var/lib/jenkins. Thanks for your suggestion.

  13. hi, 

    I am trying to install jenkins in my RedHat 7 machine. 

    I am able to install java and jenkins without any issues. 

    Jenkins is not able to start. i have tried yum install java and then yum install java-1.8.0-openjdk. both didnt resolve the startup issues.

     

    [root@*** init.d]# journalctl -xe
    Aug 10 06:43:32 *** jenkins[6350]: Starting Jenkins Exception in thread "main" java.lang.reflect.InvocationTargetException
    Aug 10 06:43:32 *** jenkins[6350]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    Aug 10 06:43:32 *** jenkins[6350]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    Aug 10 06:43:32 *** jenkins[6350]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    Aug 10 06:43:32 ***[6350]: at java.lang.reflect.Method.invoke(Method.java:498)
    Aug 10 06:43:32 *** jenkins[6350]: at Main._main(Main.java:227)
    Aug 10 06:43:32 *** jenkins[6350]: at Main.main(Main.java:160)
    Aug 10 06:43:32*** jenkins[6350]: Caused by: java.lang.UnsatisfiedLinkError: /tmp/jna--1712433994/jna8881307861936083912.tmp: /tmp/jna--1
    Aug 10 06:43:32 *** jenkins[6350]: at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    Aug 10 06:43:32 *** jenkins[6350]: at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    Aug 10 06:43:32 *** jenkins[6350]: at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    Aug 10 06:43:32 *** jenkins[6350]: at java.lang.Runtime.load0(Runtime.java:809)
    Aug 10 06:43:32 *** jenkins[6350]: at java.lang.System.load(System.java:1086)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:947)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:922)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.jna.Native.<clinit>(Native.java:190)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.CLibrary.<clinit>(CLibrary.java:89)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.JavaVMArguments.resolvePID(JavaVMArguments.java:128)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.JavaVMArguments.ofLinux(JavaVMArguments.java:116)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.JavaVMArguments.of(JavaVMArguments.java:104)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.JavaVMArguments.current(JavaVMArguments.java:92)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.Daemon.daemonize(Daemon.java:106)
    Aug 10 06:43:32 *** jenkins[6350]: at com.sun.akuma.Daemon.all(Daemon.java:88)
    Aug 10 06:43:32 *** jenkins[6350]: ... 6 more
    Aug 10 06:43:32 *** runuser[6355]: pam_unix(runuser:session): session closed for user jenkins
    Aug 10 06:43:32 *** jenkins[6350]: [FAILED]
    Aug 10 06:43:32 *** systemd[1]: jenkins.service: control process exited, code=exited status=1
    Aug 10 06:43:32 *** systemd[1]: Failed to start LSB: Jenkins Automation Server.
    -- Subject: Unit jenkins.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    --
    -- Unit jenkins.service has failed.
    --
    -- The result is failed.
    Aug 10 06:43:32 *** systemd[1]: Unit jenkins.service entered failed state.
    Aug 10 06:43:32 *** systemd[1]: jenkins.service failed.
    Aug 10 06:43:32 *** polkitd[832]: Unregistered Authentication Agent for unix-process:6344:1470301507 (system bus name :1.58423, object pat

    1. Has your installation-target been hardened (STIG or CIS or similar benchmarks)? I ask, because, the error line:

      Aug 10 06:43:32*** jenkins[6350]: Caused by: java.lang.UnsatisfiedLinkError: /tmp/jna--1712433994/jna8881307861936083912.tmp: /tmp/jna--1

      Makes it look like Java's JNA process is unhappy with your /tmp. Most frequently, I've seen this when the /tmp location is a filesystem that has the noexec option set on it.

      -tom

      1. Hi Thomas, 

        Thanks for replying

        No, /tmp has necessary permissions to exec. infact i have also even tried giving 777 to /tmp/jna–1712433994 but didnt resolve this issue with both jenkins and root users. 

  14. Ravi Mitra Reddy,

    did you resolve your issue yet? if you didn't. 

    by chance, do you have SELinux turned on? if  you do, did you open up SELinux to allow Jenkins to read/write everywhere that it needs access to on the filesystem. SELinux might be blocking Jenkins from using areas of the local filesystem by default