Jenkins Pipeline中Groovy findFiles无法识别.info文件问题
问题分析与解决
你遇到的问题根源是glob模式写法错误,导致无法匹配.info后缀的文件。
错误原因
你当前使用的**info会匹配**文件名末尾直接是info**的文件(比如testinfo),但你的lcov文件是.info后缀(比如coverage.info),这个模式根本匹配不到带点的后缀文件。而之前**xml能生效,大概率是你的XML文件命名刚好是不带点的(比如reportxml),或者是Jenkins路径匹配的偶然兼容,但这并不是正确的后缀匹配写法。
修正后的代码
要正确匹配所有子目录下的.info后缀文件,需要把glob模式改成**/*.info:
f = findFiles(glob: '**/*.info') f.each { cov_file-> println cov_file }
额外排查建议
- 确认文件状态:先在Pipeline里执行
sh 'find . -name "*.info"',验证.info文件确实存在于工作目录及子目录,且Jenkins运行用户有读取权限。 - 理解Jenkins glob规则:
findFiles用的是Ant风格路径匹配:**匹配任意层级的子目录*匹配任意非路径分隔符的字符- 匹配带点的后缀文件,必须明确写出
.,比如**/*.xml、**/*.info
内容的提问来源于stack exchange,提问作者Itsme
相关产品推荐
相关产品推荐

