Configure Jenkins for different user.home

14,079

Solution 1

I found another workaroud.

  1. Go to the Manage Jenkins > Configure System
  2. Navigate to the Global Properties
  3. Make the Checkbox Environment variables active
  4. Name field pop up the user.home
  5. value is your desired path
  6. Click Apply, Save and Restart Jenkins

This overrides that path.

Solution 2

I exactly had the same problem. You cannot just add an environment variable to change the path. You'll need to change the jenkins user's home directory itself.

In a linux/unix based system run the following command on your terminal.

login as a root user or use sudo in front of the commands if you're not running it as root user,

1) Move the Jenkins installation directory your desired location.

  mv /var/lib/jenkins /path/to/your/location

2) Change the Jenkins users home directory.

  usermod -d /path/to/your/location jenkins

Now restart jenkins. You should see the user.home and HOME variable set to the new location.

Solution 3

I exactly had a same problem on ubuntu server.

login as a root user.

stop the all process running with a jenkins user.

1) stop the jenkins service.

  sudo service jenkins stop

2) Change the Jenkins users home directory.

  usermod -d /path/to/your/location jenkins

3) start the jenkins service.

  sudo service jenkins start 

You will see the user.home and HOME and PWD variable set to the new location.

  • Go to: Manage Jenkins > system information

  • Here you will see the changed variables location

Solution 4

I had the same problem and solved in two different ways:

1- At the first time I edited the file startup.sh, inside /tomcat/bin. Inside this file I added this at the first line: JENKINS_HOME=/var/jenkins

2- Set the same inside environment variables. Just take care to set the variable with the same user that Jenkins are executed. For example, if Jenkings Jenkins is running under root, you need to specify the environment variable with this uses.

Observation: Because of compatibility questions, if you define HUDSON_HOME instead of JENKINS_HOME it will works fine two.

Hope it helps!

Share:
14,079
TheDevOpsGuru
Author by

TheDevOpsGuru

I am a Java and .NET developer who has migrated into a Software Engineering / DevOps / TestOps role. I also have strong skills in SQL.

Updated on June 14, 2022

Comments

  • TheDevOpsGuru
    TheDevOpsGuru almost 2 years

    I am running Jenkins version 1.527 (I know there is a newer version but it is broken, I can't use the user interface in 1.528 and haven't gotten a chance to upgrade to 1.529)

    I am trying to change the user.home system property in Jenkins by doing this in my startup script:

    export HOME=/new-home-dir
    

    However, the environment variable shows correctly in jenkins and user.dir shows as the exported variable, but user.home does not change.

    The reason I can't use the default functionality is because I am in an enterprise that locks down the user's home directory and my user can add or modify files there.

    Any help on changing user.home would be greatly appreciated.

    FYI - I am running Jenkins on RHEL v6.2

    Attempted Solutions

    1. add -Duser.home=/newDir to JAVA_OPTS or JAVA_ARGS, neither worked
    2. add -Duser.home=/newDir to the MAVEN_OPTS in the build job.
  • Dinesh
    Dinesh about 8 years
    This is not the correct way for doing it! Please see my answer below.