如何在jenkins中显示npm审核结果并使构建失败
我希望将npm命令作为ci构建的一部分运行,并以某种方式在jenkins ci构建中显示输出如何在jenkins中显示npm审核结果并使构建失败,jenkins,npm,npm-audit,Jenkins,Npm,Npm Audit,我希望将npm命令作为ci构建的一部分运行,并以某种方式在jenkins ci构建中显示输出 如果发现严重漏洞,我希望通过返回非零退出代码使当前构建失败。我不知道有任何插件可以实现这一点,但一些手动解析可能会起作用(如果您使用的是管道) 然后,您可以使用一些正则表达式或其他字符串操作来查找临界值之后的数字。您还可以使用archiveArtifacts在构建历史记录中保存整个输出。受此启发,我通过创建一个自定义的“编译器警告解析器”实现了这一点 安装 配置自定义解析器: 管理Jenkins->配置
如果发现严重漏洞,我希望通过返回非零退出代码使当前构建失败。我不知道有任何插件可以实现这一点,但一些手动解析可能会起作用(如果您使用的是管道) 然后,您可以使用一些正则表达式或其他字符串操作来查找临界值之后的数字。您还可以使用archiveArtifacts在构建历史记录中保存整个输出。受此启发,我通过创建一个自定义的“编译器警告解析器”实现了这一点
管理Jenkins->配置系统->编译器警告部分
名称:NPM审计分析器
链接名称:NPM审核分析器
趋势报告名称:检测到的漏洞
正则表达式:
[\w+-]+\s+([\w+-]+)\s+([\w\.-@]+)\s+(>=\s)*([\w\.-@]+)\s+(.+?=http))([\w\.-@]+\s+(.*)
映射脚本:
导入hudson.plugins.Warning.parser.Warning
导入hudson.plugins.analysis.util.model.Priority
优先级=优先级。高;
如果(“低”==匹配器组(2)){
优先级=优先级。低;
}
否则,如果(“中等”==匹配器组(2)){
优先级=优先级。正常;
}
String msg=“在“+matcher.group(1)+”中发现的漏洞”(“+matcher.group(6)+”),优先级:“+matcher.group(2)+”修复:“+matcher.group(5)+”信息:“+matcher.group(5);
返回新警告('package.json',0,'NSP Warning',matcher.group(1),msg,priority);
npm安装
#“编译警告生成后步骤”的可分析报告
npm audit--可解析>>npm_audit_report_parseable.txt | | true#抑制npm审核错误代码
“扫描工作区文件”->文件模式:npm_audit_report_parseable.txt
“扫描工作区文件”->解析器:NPM审核分析器
另一个解决方案:使用
管理Jenkins->全局工具配置->依赖项检查->添加依赖项检查
依赖项检查安装:选择配置的全局工具
我还配置了额外的参数--scan/non/existing/dir,以避免在安装的包相关文件(如“demo”、“docs”等)中发现漏洞。因为“依赖项检查插件”执行完整的递归文件扫描,我们不需要,因为npm扫描程序已经找到了“npm审计”结果
XML报告:**/dependency-check-Report.XML
你能详细说明你的问题吗?这是个人项目还是团队合作?如果是一个团队,你最终实现了吗?我不明白你为什么希望构建失败。在成功构建之前,难道不需要所有PR作者在每个PR分支中进行相同的修复吗?
def output = sh script: "npm audit", returnStdout: true
def summary = output.split("\n")[-1] //get the summary from the last line
...