David Reiss created JENKINS-13202:
-------------------------------------

             Summary: 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


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

        

Reply via email to