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

Jenkins xUnit插件报错:无法创建目录问题排查求助

Jenkins xUnit插件Ubuntu代理目录创建失败排查方案

问题场景

在声明式Jenkins Pipeline中使用GoogleTest生成测试XML文件,通过xUnit插件处理时,流程在非Ubuntu代理上运行正常,但Ubuntu代理执行以下代码时抛出异常:

xunit (
    tools: [ GoogleTest(pattern: "gtest_output.xml")],
    thresholds: [ failed(failureThreshold: '0') ]
)

报错信息

java.io.IOException: Cannot create directory '<110-characters-long path>'.
    at org.apache.commons.io.FileUtils.mkdirs(FileUtils.java:2200)
    at org.apache.commons.io.FileUtils.forceMkdir(FileUtils.java:1383)
    at org.jenkinsci.plugins.xunit.service.XUnitTransformerCallable.invoke(XUnitTransformerCallable.java:80)
    at org.jenkinsci.plugins.xunit.service.XUnitTransformerCallable.invoke(XUnitTransformerCallable.java:38)
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3487)
    at hudson.remoting.UserRequest.perform(UserRequest.java:212)
    at hudson.remoting.UserRequest.perform(UserRequest.java:54)
    at hudson.remoting.Request$2.run(Request.java:369)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
    at java.lang.Thread.run(Thread.java:748)

插件尝试创建的路径格式为:<工作目录>/generatedJUnitFiles/<哈希值>/,已尝试缩短工作目录路径、手动创建哈希目录以外的层级,均未解决问题。

排查建议与可能原因

1. 权限验证

  • 检查Ubuntu代理上Jenkins运行用户(通常为jenkins)对工作目录及generatedJUnitFiles父目录的写入权限,执行以下命令测试:
    # 查看目录权限
    ls -ld <工作目录>
    # 模拟Jenkins用户创建目录
    sudo -u jenkins mkdir <工作目录>/generatedJUnitFiles/test-temp-dir
    
    如果手动创建失败,说明权限不足,需调整目录权限或将Jenkins用户加入对应用户组。

2. 文件系统与挂载限制

  • 检查工作目录所在磁盘的可用空间:
    df -h <工作目录>
    
  • 确认工作目录是否挂载在特殊文件系统(如NFS、tmpfs)或存在磁盘配额:
    • 查看磁盘配额:repquota -a
    • 检查挂载属性:mount | grep <工作目录所在分区>,确认无ro(只读)或其他限制目录创建的属性。

3. 路径与字符问题

  • 检查工作目录路径是否包含Ubuntu文件系统不允许的特殊字符(如非ASCII字符、未转义的空格等),尝试使用纯英文无空格的路径进行测试。
  • 验证系统目录长度限制:
    # 查看单路径最大长度
    getconf PATH_MAX <工作目录>
    # 查看单个文件名最大长度
    getconf NAME_MAX <工作目录>
    
    110字符通常远低于默认限制,但需确认目标路径未触发系统级限制。

4. 插件与依赖版本差异

  • 对比Ubuntu代理与正常代理的xUnit插件版本,确保两者一致;尝试将Ubuntu代理的xUnit插件更新至最新稳定版。
  • 检查Jenkins代理的Java版本是否与xUnit插件兼容,部分插件版本对Java 8/11有明确要求。

5. Jenkins进程资源限制

  • 查看Jenkins用户的系统资源限制:
    sudo -u jenkins ulimit -a
    
    重点关注文件创建、目录相关的限制项,确保无严格限制导致无法创建目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:07:08