Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set the workspace root directory on Jenkins nodes?

By default, jobs on a Jenkins node will be stored in [Remote FS root]\workspace\.

Currently, [Remote FS root] is set to D:\, so my jobs are in D:\workspace\. Due to the 255-characters limit on Windows, I need my job directories to be directly at the root of the drive.

How to set the workspace root directory to D:\?

like image 658
Stéphane Bruckert Avatar asked May 21 '14 10:05

Stéphane Bruckert


People also ask

What is default Jenkins workspace directory?

Operating system. Path. Windows. JENKINS_HOME\workspace\projectName. Linux.

What is Jenkins remote root directory?

Remote root directory : An agent needs to have a directory dedicated to Jenkins. Specify the path to this directory on the agent. It is best to use an absolute path, such as /var/jenkins/node1 or c:\jenkins\node1. This should be a path local to the agent machine.


2 Answers

We have to specify the following argument on startup of the Jenkins master node:

-Dhudson.model.Slave.workspaceRoot=D:/

To do so, find the jenkins.xml configuration file in $JENKINS_HOME and complete the <arguments></arguments> section.

like image 159
Stéphane Bruckert Avatar answered Oct 17 '22 04:10

Stéphane Bruckert


By default, jobs on a Jenkins slave will be stored in [Remote FS root]\workspace\

It seems that, at least on Windows, this is not actually true.

I'm running Jenkins 1.480.3, and my slaves are run via jenkins-slave.exeand jenkins-slave.xml on Windows nodes.

Neither the XML file nor the service parameters store any path information, and *the workspace directory is created at the location of the jenkins-slave.exe, which is the same as the setting under http://server/jenkins/computer/node_name/configure -> Remote FS root the help for which reads:

A slave needs to have a directory dedicated to Jenkins. Specify the absolute path of this work directory on the slave, such as '/var/jenkins' or 'c:\jenkins'. This should be a path local to the slave machine. (...)

Slaves do not maintain important data (other than active workspaces of projects last built on it), so you can possibly set the slave workspace to a temporary directory. The only downside of doing this is that you may lose the up-to-date workspace if the slave is turned off.

So it seems it is actually possible to set the workspaceon the slave via the Jenkins FS root for the slaves.

Also related: https://issues.jenkins-ci.org/browse/JENKINS-12667

like image 43
Martin Ba Avatar answered Oct 17 '22 04:10

Martin Ba