10
votes

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:\?

2

2 Answers

7
votes

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.

3
votes

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