Question

The problem is that when Hudson checks out the files, it doesn't use symlinks. I've tried the svn13 and svn14 plug ins, but neither worked.

Was it helpful?

Solution

In linux, edit your /etc/init.d/hudson script file:

Look for a line that looks like:

$SU $HUDSON_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS  -jar $HUDSON_WAR $HUDSON_ARGS" || return 2

Change it to:

$SU $HUDSON_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS -Dsvnkit.symlinks=true -jar $HUDSON_WAR $HUDSON_ARGS" || return 2

Save the file and type:

sudo /etc/init.d/hudson stop
sudo /etc/init.d/hudson start

In summary, you're essentially looking to pass JAVA -Dsvnkit.symlinks=true so that symlinks are resolved to folders instead of a file.

OTHER TIPS

In CentOS, the line you should change reads:

JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"

Change it to:

JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -Dsvnkit.symlinks=true -jar $JENKINS_WAR"

And restart jenkins

I'm not sure which version of the subversion plugin you've tried, but as of subversion plugin 1.30 it works out of the box.

I guess SVNKit at some point change the default from doing symlink by default, and Jenkins benefited from it.

If you want to edit this setting per slave node, this worked for me:

From Jenkins UI:

  1. Disconnect node
  2. Click on slave node, Under Configure -> Advanced -> JVM Options:
  3. Add line: Dsvnkit.symlinks=true
  4. Relaunch slave
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top