-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major
-
Component/s: core
-
Environment:Jenkins 2.89.2
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.
- depends on
-
JENKINS-51032 Add excludes option to Fingerprinter
-
- Open
-