Fortify CI集成:Jenkins构建中如何审核FPR文件并遇错终止构建?
审核FPR文件并终止Jenkins构建的最优方案
作为经常处理Jenkins+Fortify集成的开发者,我来分享几个经过实践验证的最优方法,帮你在构建流程里自动审核FPR文件,一旦检测到不符合要求的漏洞就终止构建:
方法一:使用Fortify官方Jenkins插件(首推)
这是最省心的方案,官方插件已经封装了和SSC的交互逻辑,不用自己写复杂脚本:
- 先在Jenkins的「插件管理」里安装Fortify Jenkins Plugin。
- 配置流程:
- 进入Jenkins全局配置,添加你的SSC服务器连接信息(地址、用户名密码凭据)。
- 在你的Job构建流程中,在
sourceanalyzer生成FPR并上传到SSC的步骤之后,添加Fortify SSC Assessment步骤。 - 在该步骤的配置里,设置构建失败阈值:比如你可以指定「高危漏洞数量>0」「总漏洞数≥5」或者「存在特定类型的漏洞」时,让构建直接失败。
- 插件会自动从SSC拉取最新的扫描结果,对照你设置的阈值判断,完全不用手动解析FPR文件,非常高效。
方法二:用fprutility命令行自定义审核逻辑
如果需要更灵活的规则(比如结合漏洞类型、自定义风险等级),可以用Fortify自带的fprutility工具本地解析FPR:
- 在Jenkins构建的「Post-build Actions」或者「Pipeline脚本」里添加以下命令:
# 导出FPR文件的漏洞统计信息到临时文件 fprutility -info -project ./your-project.fpr -output fpr-results.txt # 统计高危漏洞数量(根据实际输出格式调整grep/awk逻辑) HIGH_RISK_NUM=$(grep "High Severity" fpr-results.txt | awk '{print $NF}') # 判断如果高危漏洞数超过阈值,终止构建 if [ "$HIGH_RISK_NUM" -gt 0 ]; then echo "⚠️ 检测到${HIGH_RISK_NUM}个高危漏洞,终止构建" exit 1 fi - 这种方式适合需要定制化判断规则的场景,比如只针对特定漏洞类型(如注入类)来终止构建。
方法三:调用SSC REST API获取扫描结果
如果FPR已经上传到SSC,也可以直接调用SSC的API来查询结果,复用SSC上配置的质量门规则:
- 在Jenkins脚本里用curl+jq来处理(需要提前在Jenkins节点安装jq):
# 替换为你的SSC地址、凭据和项目版本ID SSC_URL="http://your-ssc-server:8080/ssc" SSC_CREDS="${SSC_USER}:${SSC_PASS}" PROJECT_VERSION_ID="12345" # 调用API获取漏洞摘要 ISSUE_SUMMARY=$(curl -s -u "$SSC_CREDS" "${SSC_URL}/api/v1/projectVersions/${PROJECT_VERSION_ID}/issues/summary") # 提取高危漏洞数量 HIGH_RISK_COUNT=$(echo "$ISSUE_SUMMARY" | jq '.counts.HIGH') # 触发构建失败 if [ "$HIGH_RISK_COUNT" -gt 0 ]; then echo "❌ SSC检测到${HIGH_RISK_COUNT}个高危漏洞,构建终止" exit 1 fi - 这种方式适合已经在SSC里配置了完善的质量门规则,想直接复用这些规则来管控Jenkins构建的场景。
额外注意事项
- 确保Jenkins节点上已经安装了对应的工具:Fortify工具集(sourceanalyzer、fprutility)、jq(如果用API方案)。
- 不要在脚本里明文写SSC的用户名密码,存在Jenkins的「凭据管理」里,通过环境变量引用更安全。
内容的提问来源于stack exchange,提问作者Faizal
相关产品推荐
相关产品推荐

