You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium4.8.1升级后Jenkins Pipeline执行后置条件抛TAR归档截断错误

问题:Selenium升级至4.8.1后Jenkins Pipeline归档工件失败

将Selenium从3.141.59版本升级到4.8.1版本后,原本运行正常的Jenkins Pipeline在执行always后置条件时抛出错误:java.io.IOException: Truncated TAR archive。日志显示文件复制步骤正常,但归档工件环节出现问题,最终流水线执行失败。

错误堆栈信息

at java.base/java.io.InputStream.read(InputStream.java:205)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1309)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:978)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1282)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:953)
at hudson.util.IOUtils.copy(IOUtils.java:53)
at hudson.FilePath.readFromTar(FilePath.java:2982)
Also:       Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from ip-10-26-93-19.ec2.internal/10.26.93.19:36520
at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1784)
at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
at hudson.remoting.Channel$2.adapt(Channel.java:1034)
at hudson.remoting.Channel$2.adapt(Channel.java:1030)
at hudson.remoting.FutureAdapter.get(FutureAdapter.java:66)
at hudson.FilePath.copyRecursiveTo(FilePath.java:2753)
at jenkins.model.StandardArtifactManager.archive(StandardArtifactManager.java:73)
at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:256)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
java.io.IOException: This archive contains unclosed entries.
at org.apache.commons.compress.archivers.tar.TarArchiveOutputStream.finish(TarArchiveOutputStream.java:291)
at org.apache.commons.compress.archivers.tar.TarArchiveOutputStream.close(TarArchiveOutputStream.java:309)
at hudson.util.io.TarArchiver.close(TarArchiver.java:125)
at hudson.FilePath.writeToTar(FilePath.java:2953)
at hudson.FilePath.access$3500(FilePath.java:212)
at hudson.FilePath$CopyRecursiveRemoteToLocal.invoke(FilePath.java:2916)
at hudson.FilePath$CopyRecursiveRemoteToLocal.invoke(FilePath.java:2901)
at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3487)
at hudson.remoting.UserRequest.perform(UserRequest.java:211)
at hudson.remoting.UserRequest.perform(UserRequest.java:54)
at hudson.remoting.Request$2.run(Request.java:376)
at hudson.remoting.InterceptingExecutorService.lambda$wrap$0(InterceptingExecutorService.java:78)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:121)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused: java.util.concurrent.ExecutionException
at hudson.remoting.Channel$2.adapt(Channel.java:1036)
at hudson.remoting.Channel$2.adapt(Channel.java:1030)
at hudson.remoting.FutureAdapter.get(FutureAdapter.java:66)
at hudson.FilePath.copyRecursiveTo(FilePath.java:2753)
Caused: java.io.IOException: Failed to extract /home/jenkins/agent/workspace/myworkspace/abc_server_automation_run/transfer of 54 files
at hudson.FilePath.readFromTar(FilePath.java:2992)
at hudson.FilePath.copyRecursiveTo(FilePath.java:2750)
at jenkins.model.StandardArtifactManager.archive(StandardArtifactManager.java:73)
at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:256)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)
at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)
at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)

Pipeline执行日志

[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // podTemplate
[Pipeline] End of Pipeline
ERROR: Exit code is non zero, few tests failed so erroring out!
Finished: FAILURE

+ ls -l /tmp/shared/output/
  total 4
  drwxr-xr-x 6 root root 4096 Feb 24 11:54 smoke-results
  [Pipeline] sh
+ cp -r /tmp/shared/output/ .
  [Pipeline] sh
+ ls -alh ./output
  total 4.0K
  drwxr-xr-x 3 root root   27 Feb 24 11:54 .
  drwxr-xr-x 7 1000 1000  283 Feb 24 11:54 ..
  drwxr-xr-x 6 root root 4.0K Feb 24 11:54 smoke-results
  [Pipeline] archiveArtifacts
  Archiving artifacts
  [Pipeline] sh
+ docker-compose down

解决方法

1. 修正归档文件权限

从日志可见,复制后的./output目录及子文件属于root用户,而Jenkins Agent运行在1000:1000用户下,权限不足会导致归档时无法完整读取文件,破坏TAR结构。在复制文件后添加权限修正步骤:

chown -R 1000:1000 ./output

2. 释放Selenium文件占用

Selenium 4.x可能在测试结束后未完全释放结果文件句柄,导致Jenkins归档时读取失败。可在归档前增加等待时间,确保句柄释放:

sleep 10

同时确保测试代码中显式关闭Selenium驱动及相关资源。

3. 调整Jenkins归档配置

  • 禁用归档指纹功能,减少额外操作:
archiveArtifacts artifacts: 'output/**', fingerprint: false
  • 手动打包后再归档,避免Jenkins自动打包出错:
tar -czf output.tar.gz ./output

随后归档output.tar.gz文件。

4. 检查Agent磁盘空间

磁盘空间不足也可能导致TAR文件截断,执行以下命令确认空间充足:

df -h

内容的提问来源于stack exchange,提问作者amit kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 08:27:08