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

Jenkins Pipeline配置attachmentsPattern访问/tmp文件时Ant GLOB语法报错

问题排查与解决方法

报错核心是最终生成的Ant GLOB模式为/tmp/*/tmp/aaa-development-build.diff.html,存在重复路径拼接错误,不符合Ant路径匹配规则,可按以下步骤排查修复:

1 定位路径拼接异常根因

你预期的匹配模式是匹配/tmp目录下的${APPNAME}-${ENVIRONMENT}-build.diff.html文件,但最终生成的模式多出来了/tmp/前缀段,优先检查两个配置:

  • 确认${APPNAME}变量的赋值正确,没有被错误带上/tmp/前缀,正常应该仅为纯应用名称,比如示例中的aaa
  • 检查你使用的通知插件配置,部分插件的attachmentsPattern参数默认基于Jenkins任务工作目录解析路径,传入绝对路径时会出现重复拼接的问题

2 修正匹配模式写法

你当前的模式中/tmp/*${APPNAME}的写法多了不必要的通配符,根据场景选择正确的写法:

场景1:插件支持绝对路径匹配

直接去掉多余的*即可:

attachmentsPattern: "/tmp/${APPNAME}-${ENVIRONMENT}-build.diff.html",

如果需要模糊匹配同应用不同环境的差异文件,调整为:

attachmentsPattern: "/tmp/${APPNAME}-*-build.diff.html",

场景2:插件不支持访问工作区外路径(推荐方案)

绝大多数Jenkins插件默认仅允许读取当前任务工作区内的文件,直接访问系统/tmp目录可能存在权限、路径解析异常问题,建议修改生成报告的逻辑,把文件写入工作区后再匹配:

def publisher = LastChanges.getLastChangesPublisher null, "SIDE", "LINE", true, true, "", "", "", "", ""
publisher.publishLastChanges()
def htmlDiff = publisher.getHtmlDiff()
// 将报告写入当前Jenkins任务的工作区
writeFile file: "${APPNAME}-${ENVIRONMENT}-build.diff.html", text: htmlDiff

对应匹配模式直接写工作区内的相对路径即可:

attachmentsPattern: "${APPNAME}-${ENVIRONMENT}-build.diff.html",

3 验证配置合法性

修改后确认最终生成的匹配模式没有重复路径段,符合Ant GLOB规则:

  • 单通配符*仅匹配单个目录下不含路径分隔符的任意字符
  • 跨目录匹配使用双通配符**
  • 不要重复拼接根路径前缀

内容的提问来源于stack exchange,提问作者Edcel Cabrera Vista

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 23:45:05