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

Jenkins流水线中忽略安全检查结果的Beta版本建议

解决Jenkins流水线中Safety扫描Beta版本修复漏洞的问题

方案1:用Safety配置文件过滤Beta修复项

Safety支持配置文件自定义忽略规则,创建一个safety.yml文件,添加正则匹配Beta版本的修复项:

ignore:
  - type: fixed_version
    pattern: ".*b\\d+"

然后在流水线命令里指定这个配置文件:

safety check -r requirements.txt --config safety.yml

这个规则会自动忽略所有修复版本带b+数字(比如2.0.0b1)的漏洞提示,不用提前知道漏洞ID。

方案2:Shell脚本过滤输出再判定结果

如果不想用配置文件,直接在Jenkins的Shell步骤里处理Safety的输出,过滤掉Beta修复的漏洞后再判断是否失败:

# 捕获safety的所有输出
SAFETY_RESULT=$(safety check -r requirements.txt 2>&1)
# 过滤掉含"fixed in X.X.XbX"的行
FILTERED_RESULT=$(echo "$SAFETY_RESULT" | grep -v "fixed in.*b[0-9]\+")
# 打印过滤后的结果
echo "$FILTERED_RESULT"
# 检查剩余内容里是否还有实际需要修复的漏洞
if echo "$FILTERED_RESULT" | grep -q -E "^\\[(CRITICAL|HIGH|MEDIUM|LOW)\\]"; then
  exit 1  # 有非Beta修复的漏洞,流水线失败
else
  exit 0  # 只有Beta修复的漏洞,放行
fi

把这段脚本替换原来直接执行safety check的命令就行。

方案3:JSON报告+JQ精准过滤

如果需要更灵活的处理,让Safety输出JSON格式的完整报告,用JQ工具过滤掉Beta修复的漏洞:

# 生成JSON格式的漏洞报告
SAFETY_JSON=$(safety check -r requirements.txt --full-report --json)
# 过滤出修复版本不是Beta的漏洞
NON_BETA_VULNS=$(echo "$SAFETY_JSON" | jq '.[] | select(.fixed_version | test(".*b[0-9]+") | not)')
# 判断是否存在需要处理的漏洞
if [ "$(echo "$NON_BETA_VULNS" | jq length)" -gt 0 ]; then
  echo "发现需修复的漏洞:"
  echo "$NON_BETA_VULNS"
  exit 1
else
  echo "仅检测到Beta版本修复的漏洞,忽略"
  exit 0
fi

注意:Jenkins节点需要提前安装JQ工具,Debian/Ubuntu用apt-get install jq,RHEL/CentOS用yum install jq。


内容的提问来源于stack exchange,提问作者Utkarsh Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:23:26