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

Jenkins中使用通配符路径判断文件或目录是否存在的实现方法

Jenkins通配符路径存在判断实现方案

Jenkins内置fileExists方法不支持通配符匹配,无法直接识别*service泛化路径,需要先通过支持通配符的路径扫描方法获取匹配结果,再做存在性判断。

方案1:使用内置findFiles步骤(推荐,需安装Pipeline Utility Steps插件)

绝大多数Jenkins环境都会预装该插件,写法最简洁:

when {
  expression {
    // glob参数支持Ant风格通配符,扫描匹配规则的目录
    def matchedDirs = findFiles(glob: "*service/target/test-classes")
    // 匹配到至少1个符合要求的目录就返回true
    return matchedDirs.length > 0
  }
}

如果需要匹配任意层级子目录下的*service后缀目录,可以把glob规则修改为**/*service/target/test-classes。

方案2:Groovy原生实现(无需额外插件)

如果没有安装对应插件,可以用原生Groovy语法实现路径扫描:

when {
  expression {
    // 获取当前工作目录路径
    def currentWorkspace = pwd()
    // 筛选所有后缀为service且子目录下存在target/test-classes的目录
    def serviceDirs = new File(currentWorkspace).listFiles({ file ->
      file.isDirectory() && file.name.endsWith("service") && new File(file, "target/test-classes").exists()
    } as FileFilter)
    return serviceDirs != null && serviceDirs.length > 0
  }
}

注意事项

  • 路径判断逻辑需要和后续执行步骤在同一个agent节点上执行,避免跨节点工作目录不一致导致的判断错误
  • 如果目录生成逻辑在同一个Pipeline的前置步骤中,需要确保目录生成完成后再执行该判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:54:07