gpt4 book ai didi

jenkins - 如何在 jenkins 中显示 npm 审计的结果并使构建失败

转载 作者:行者123 更新时间:2023-12-03 23:50:43 26 4
gpt4 key购买 nike

我想运行 npm 命令 npm audit作为 ci 构建的一部分,并以某种方式在 jenkins ci 构建中显示输出。

如果发现严重漏洞,我想通过返回非零退出代码来使当前构建失败。

最佳答案

灵感来自 this post ,我已经通过创建一个自定义的“编译器警告解析器”来实现这一点;

  • 安装 Warnings Plugin
  • 配置自定义解析器:
    管理 Jenkins -> 配置系统 -> '编译器警告' 部分
    姓名 : NPM 审计分析器
    链接名称 : NPM 审计分析器
    趋势报告名称 : 检测到的漏洞
    正则表达式 :[\w+-]+\s+([\w+-]+)\s+([\w\.-@]+)\s+(>=\s)*([\w\.-@]+)\s+(.+?(?=http))([\w\.-@]+)\s+(.*) 映射脚本 :

  • import hudson.plugins.warnings.parser.Warning  
    import hudson.plugins.analysis.util.model.Priority

    priority = Priority.HIGH;
    if ( "low" == matcher.group(2) ) {
    priority = Priority.LOW;
    }
    else if ( "moderate" == matcher.group(2) ) {
    priority = Priority.NORMAL;
    }

    String msg = "Vulnerability found in '" + matcher.group(1) + "' (" + matcher.group(6) + ") , prio: " + matcher.group(2) + " Fix: " + matcher.group(5) + " info: " + matcher.group(5);
    return new Warning('package.json', 0, 'NSP Warning', matcher.group(1), msg, priority);
  • 配置作业;
  • 添加 执行 shell 构建步骤:

  • npm install  
    # parseable report for 'compile warning post build step'
    npm audit --parseable >> npm_audit_report_parseable.txt || true # suppress npm audit error code
  • 添加 [已弃用] 扫描编译器警告 构建后步骤:
    “扫描工作区文件”-> 文件格式 : npm_audit_report_parseable.txt
    “扫描工作区文件”-> 解析器 : NPM 审计分析器

  • 您可以选择配置“健康/状态阈值”;这决定了构建何时失败,以及何时标记为不稳定。

    另一个解决方案:使用 Dependency-Check Plugin
  • 安装 Dependency-Check Plugin
  • 配置“依赖性检查”全局工具:
    管理 Jenkins -> 全局工具配置 -> 'Dependency-Check' -> 'Add Dependency-Check'
  • 配置作业;
  • 添加 调用依赖项检查 构建步骤:
    Dependency-Check 安装 : 选择配置的全局工具
    我还配置了额外的 参数 --scan /non/existing/dir避免在已安装的包相关文件(如“演示”、“文档”等)中发现漏洞,因为“依赖性检查插件”执行我们不需要的完整递归文件扫描,因为 npm 扫描器已经找到了“npm 审计”结果.
  • 添加 发布依赖性检查结果 构建后步骤:
    XML 报告 :**/dependency-check-report.xml
  • 关于jenkins - 如何在 jenkins 中显示 npm 审计的结果并使构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58344538/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com