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

GitLab自定义依赖扫描报告上传成功却未在安全仪表板显示问题排查

报告未在安全仪表板展示的排查与修复项

问题集中在报告格式、CI配置、展示规则三类,按影响优先级排序:

  • JSON报告存在语法错误,直接导致GitLab解析失败
    你提供的报告内容有两处违反标准JSON规范的问题,会让解析器直接丢弃整个文件:
    1. remediations 数组下的 fixes 对象中,id 属性末尾带多余尾逗号,严格JSON语法不允许对象/数组最后一个元素后加这类多余分隔符,问题代码段:
      "fixes": [
        {
          "id": "5d681b13-e8fa-4668-957e-8d88f932ddc7",
        }
      ]
      
    2. remediations 数组对象中,diff 属性值后面加了JavaScript风格的单行注释// some content is omitted for brevity,标准JSON不支持任何形式的注释,解析器读到该段内容会直接终止解析。
      哪怕制品上传接口返回201成功状态,只要JSON解析失败,报告就不会同步到安全仪表板。修复时删除上述两处非法内容,先通过本地JSON校验工具确认文件合法,再重新上传。
  • CI作业配置存在触发报告收集失败的逻辑
    作业配置了allow_failure: true,这类作业如果因脚本非零退出被标记为可接受的失败状态,GitLab默认会跳过收集该作业产生的安全类制品报告。同时当前脚本的curl命令未加失败校验参数:如果webhook请求返回非2xx状态码,curl会直接以非0值退出,加上允许失败的配置,作业最终状态会被标记为失败,关联的报告自然无法进入安全扫描收集链路。
    对应调整:
    • curl命令增加-f参数,强制在请求返回非2xx状态码时直接抛出错误,即curl -f https://webhook.site/XXXX -o gl-dependency-scanning-report.json
    • 移除无意义的sleep 3等待逻辑,减少不必要的执行时长消耗
  • 安全仪表板展示前置条件未满足
    依赖扫描报告要在项目级安全仪表板展示,需符合两个基础规则:
    1. 生成报告的流水线关联分支为项目默认分支(通常为main/master),特性分支的扫描报告只会展示在对应分支的安全详情页,不会同步到项目级仪表板
    2. 实例的依赖扫描功能权限正常开启,自定义上传的依赖扫描报告不需要额外高版本授权,只要能正常提交制品即可被识别

注意:修复上述问题后需重新触发流水线,待作业执行完成后刷新安全仪表板即可查看扫描结果。

内容的提问来源于stack exchange,提问作者Alik Ko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 12:15:10