1

In the Jenkins web interface, under Home directory (Dashboard -> Mange Jenkins -> Configure System), the help section says the following:

  • "By default, Jenkins stores all of its data in this directory on the file system", referring to /var/lib/jenkins
  • "Edit the JENKINS_HOME variable in your Jenkins configuration file (e.g. /etc/sysconfig/jenkins on Red Hat Linux)"

However, my etc directory doesn't have a directory called sysconfig.

Running the following command returns a lot of files among which only the following seems relevant:

find ~/ -type f -name "config.xml"
<...>
/var/lib/jenkins/config.xml
<...>

The file contains the following field:

<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>

Is this the correct field to edit? If so, which syntax should I follow while entering the desired path?

3 Answers 3

1

This question was already asked and answered on Stack Overflow. I'll copy the top answer here, but there are several other answers over there that you may find useful:

For me on Jenkins 2.7.2 on RHEL 7.2 after already starting jenkins and configuring a build, I needed to:

  1. Change the jenkins user's home directory

    sudo su -
    service jenkins stop
    vi /etc/passwd
    #  change the /var/lib/jenkins to /home/jenkins or whatever 
    
  2. Change the setting in the start script to also find it

    vi /etc/sysconfig/jenkins
    #   change the JENKINS_HOME to /home/jenkins or what ever
    
  3. Copy all the data to the new location (eg: /home/jenkins)

    cd /home
    cp -Rf /var/lib/jenkins .
    chown -R jenkins:jenkins *
    
  4. Start it back up

    service jenkins start
    

And that seems to have done it for me.

1

I was having the same problem on a Centos 7.9 system using Jenkins 2.346.2

Sometime around 2.332.1 Jenkins migrated from init.d to system.d, so the previous method of updating the /etc/sysconfig/jenkins (or /etc/default/jenkins) became deprecated.

You now use overrides through: systemctl edit jenkins

Jenkins systemd reference: https://www.jenkins.io/doc/book/system-administration/systemd-services/

0

The following script can be used to do what you want:

# become root
sudo -i

# stop the jenkins service
systemctl stop jenkins

# create the directory where you want jenkins
mkdir -p /[path to your jenkins instance]

vi /etc/sysconfig/jenkins
# change JENKINS_HOME to /[path to your jenkins instance]

vi /etc/passwd
#  change the default /var/lib/jenkins to /[path to your jenkins instance]

mv -R /var/lib/jenkins /[path to your jenkins instance]

# grant ownership of all the files to jenkins
chown -R jenkins:jenkins .[path to your jenkins instance]

# start jenkins
systemctl start jenkins 

# if you want jenkins to start upon every reboot
systemctl enable jenkins

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.