如何通过Jenkins Warnings-NG插件正确导入cfn-lint检测报告
解决方案
方案1:适配parseable格式通过Warnings NG导入
你之前使用yamlLint工具导入失败的核心原因是cfn-lint的parseable输出格式与yamlLint的输出格式规则不匹配,可通过Warnings NG的自定义解析规则直接匹配cfn-lint的输出格式:
- 报告生成命令保持不变:
cfn-lint -f parseable --output-file cfn-lint-report.out - 修改Jenkinsfile中的recordIssues配置,使用自定义解析规则:
recordIssues( tools: [ issues( name: 'cfn-lint', pattern: 'cfn-lint-report.out', // 正则匹配cfn-lint parseable格式的输出字段:文件名、行号、列号、错误等级、规则ID、错误信息 regexp: /^([^:]+):(\d+):(\d+):\s*(\w+)\s*(\w+):\s*(.*)$/, mapping: { fileName = matcher.group(1) lineStart = matcher.group(2) as Integer columnStart = matcher.group(3) as Integer severity = matcher.group(4) == 'ERROR' ? 'ERROR' : (matcher.group(4) == 'WARNING' ? 'NORMAL' : 'LOW') category = matcher.group(5) message = matcher.group(6) } ) ] )
该方案可以将cfn-lint的检测结果和你已有的Pylint、YamlLint结果统一在Warnings NG面板展示。
方案2:通过原生JUnit插件导入
使用Warnings NG的junitParser报错多为插件版本和cfn-lint输出的JUnit格式兼容性问题,可直接使用Jenkins内置的JUnit插件处理报告:
- 报告生成命令保持不变:
cfn-lint . -f junit --output-file cfn-lint-junit.xml - 替换导入配置为:
junit testResults: 'cfn-lint-junit.xml', allowEmptyResults: true
如果仍需要在Warnings NG面板统一查看,可升级Warnings NG插件到最新稳定版,最新版本已兼容cfn-lint输出的JUnit格式。
注意事项
- 保持cfn-lint执行目录和Jenkins流水线工作目录一致,避免报告中的相对路径无法被插件识别
- 建议将cfn-lint升级到v1.7.0及以上版本,低版本输出的报告格式可能存在字段缺失问题
内容的提问来源于stack exchange,提问作者Chilcano
相关产品推荐
相关产品推荐

