[ https://issues.jenkins-ci.org/browse/JENKINS-13202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
SCM/JIRA link daemon resolved JENKINS-13202. -------------------------------------------- Resolution: Fixed > Artifact archiving from an ssh slave fails if symlinks are present > ------------------------------------------------------------------ > > Key: JENKINS-13202 > URL: https://issues.jenkins-ci.org/browse/JENKINS-13202 > Project: Jenkins > Issue Type: Bug > Components: core > Affects Versions: current > Environment: Slave must be a "Unix via SSH" slave. I suspect the > master must be Unix-based also. I tested with both the master and slave on > Linux. > Reporter: David Reiss > Labels: artifact > > When archiving artifacts from a job executed on a "Unix via SSH" slave, if a > symlink is present and archived before its target, the archiving will fail. > It looks like the master is trying to chmod the local symlink (because it has > executable permissions stored in the tar used to do the remote copy), but > that fails because the target doesn't exist yet, and the exception aborts the > archiving. I think the solution is to just not chmod symlinks, since they > don't have modes of their own. This was a regression from 1.455 to 1.456. I > suspect the fixes for JENKINS-9118 are the cause. > To reproduce this problem, install the Jenkins master on a Linux machine and > add a "Unix via SSH" slave that is also a Linux machine. Create a job with > the following build script: > {noformat} > rm -rf stuff > mkdir stuff > cd stuff > touch zzfile > ln -s zzfile aafile > ln -s zzfile bbfile > {noformat} > Restrict this project to build on the slave. Set up archiving for "stuff/*". > Run the job. The job will complete successfully, but archiving will abort > partway though with a stack trace in the console. > {noformat} > Archiving artifacts > ERROR: Failed to archive artifacts: stuff/* > hudson.util.IOException2: Failed to extract > /tmp/jenkins-slave-home/workspace/create_symlinks/stuff/* > at hudson.FilePath.readFromTar(FilePath.java:1817) > at hudson.FilePath.copyRecursiveTo(FilePath.java:1729) > at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:116) > at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19) > at > hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:678) > at > hudson.model.AbstractBuild$AbstractRunner.performAllBuildSteps(AbstractBuild.java:656) > at hudson.model.Build$RunnerImpl.post2(Build.java:162) > at > hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:625) > at hudson.model.Run.run(Run.java:1435) > at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) > at hudson.model.ResourceController.execute(ResourceController.java:88) > at hudson.model.Executor.run(Executor.java:238) > Caused by: java.io.IOException: Failed to chmod > /tmp/jenkins-home/jobs/create_symlinks/builds/2012-03-21_16-53-15/archive/stuff/aafile > : No such file or directory > at hudson.FilePath._chmod(FilePath.java:1248) > at hudson.FilePath.readFromTar(FilePath.java:1813) > ... 12 more > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira