Details
-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
Jenkins 2.89.2
Description
The archiveArtifacts step appears to be fingerprinting files which should be in the excludes set, which causes build failure if the files cannot be fingerprinted. (In this case – a broken symlink).
The archiveArtifacts step should not be processing files in the excludes set beyond the required name-pattern check.
We have a multi-architecture build, and archive the build results by first stashing them for each platform, and unstashing them into platform-specific subdirectories.
Our archive step is then (originally from the Pipeline Syntax generator):
archiveArtifacts ([ artifacts: """ ${env.PROJECT_HOME}/**/*.exe, ${env.PROJECT_HOME}/**/lib*.so*, ${env.PROJECT_HOME}/**/lib*.a, """, allowEmptyArchive: true, excludes: """ **/test/**, ${env.PROJECT_HOME}/lib/*, """, fingerprint: true, onlyIfSuccessful: true, ])
where the broken symlink is a library-name in '${env.PROJECT_HOME}/lib'.
The step results in the following exception which fails the build (although the stage is not marked as a failure?):
Archiving artifacts Recording fingerprints ERROR: Failed to record fingerprints java.nio.file.NoSuchFileException: ${WORSPACE}/${PROJECT_HOME}/lib/libcrypto.so.1.1 at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214) at java.nio.file.Files.newByteChannel(Files.java:361) at java.nio.file.Files.newByteChannel(Files.java:407) at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384) at java.nio.file.Files.newInputStream(Files.java:152) at hudson.Util.getDigestOf(Util.java:838) at hudson.FilePath$38.invoke(FilePath.java:1940) at hudson.FilePath$38.invoke(FilePath.java:1937) at hudson.FilePath.act(FilePath.java:997) at hudson.FilePath.act(FilePath.java:975) at hudson.FilePath.digest(FilePath.java:1937) at hudson.tasks.Fingerprinter$2.invoke(Fingerprinter.java:231) Caused: java.io.IOException: Failed to compute digest for ${WORKSPACE}/${PROJECT_HOME}/lib/libcrypto.so.1.1 at hudson.tasks.Fingerprinter$2.invoke(Fingerprinter.java:233) at hudson.tasks.Fingerprinter$2.invoke(Fingerprinter.java:215) at hudson.FilePath.act(FilePath.java:997) at hudson.FilePath.act(FilePath.java:975) at hudson.tasks.Fingerprinter.record(Fingerprinter.java:215) at hudson.tasks.Fingerprinter.perform(Fingerprinter.java:127) at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:247) at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80) at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1$1.call(SynchronousNonBlockingStepExecution.java:49) at hudson.security.ACL.impersonate(ACL.java:260) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$1.run(SynchronousNonBlockingStepExecution.java:46) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
Note that I have tried a number of excludes patterns to try to get rid of this error – although other projects with similar structure but without the broken symlink compete successfully.
Workaround: Another step before the archive to explicitly remove the symlinks.
Attachments
Issue Links
- depends on
-
JENKINS-51032 Add excludes option to Fingerprinter
-
- Open
-