如何将Mend CLI生成的Docker镜像扫描报告发布至Mend及PR集成?
一、将Docker镜像扫描结果发布至Mend平台
你当前的Mend CLI命令仅生成了SARIF文件,但默认情况下mend image命令会自动将扫描结果上传至Mend平台——你需要补充项目关联参数,确保结果归属到Mend中对应的项目:
在Mend平台配置项目:
登录Mend控制台,创建或找到对应项目,记录项目的项目Key(可在项目设置页面查看)。修改GitHub工作流中的扫描命令:
在Download Mend CLI & Run a Scan步骤的mend image命令中添加--project-key参数,关联到你的Mend项目,示例如下:/tmp/mend image ${{ env.REGISTRY }}/${{ inputs.image_name }}:${{ inputs.tag }} \ --format sarif --filename results.sarif --local-pull \ --project-key "YOUR_MEND_PROJECT_KEY"若你更习惯用项目名称,可替换为
--project-name "你的项目名称"。
该命令会同时完成两项操作:生成SARIF文件供GitHub Advanced Security使用,以及将扫描结果上传至Mend平台的关联项目。验证上传结果:
执行工作流后,登录Mend控制台进入对应项目,即可查看Docker镜像的扫描报告、漏洞详情等内容。
二、在Pull Request中添加扫描结果评论
Mend没有提供和Checkmarx One完全一致的开箱即用Action,但你可以通过自定义步骤结合GitHub CLI实现PR评论功能,步骤如下:
在Upload sarif步骤之后新增以下步骤:
- name: Install dependencies for PR comment run: | apt-get update && apt-get install -y jq gh - name: Add Mend Scan Results to PR if: github.event_name == 'pull_request' run: | # 获取扫描结果JSON并提取关键漏洞数据 SCAN_JSON=$(/tmp/mend image ${{ env.REGISTRY }}/${{ inputs.image_name }}:${{ inputs.tag }} --local-pull --format json) CRITICAL_VULNS=$(echo "$SCAN_JSON" | jq '[.vulnerabilities[] | select(.severity == "Critical")] | length') HIGH_VULNS=$(echo "$SCAN_JSON" | jq '[.vulnerabilities[] | select(.severity == "High")] | length') MEDIUM_VULNS=$(echo "$SCAN_JSON" | jq '[.vulnerabilities[] | select(.severity == "Medium")] | length') # 构造PR评论内容 COMMENT_BODY="### Mend Docker镜像扫描结果\n" COMMENT_BODY+="- 严重漏洞(Critical): $CRITICAL_VULNS\n" COMMENT_BODY+="- 高危漏洞(High): $HIGH_VULNS\n" COMMENT_BODY+="- 中危漏洞(Medium): $MEDIUM_VULNS\n" COMMENT_BODY+="完整报告可在Mend控制台对应项目中查看。" # 发布评论到当前PR gh pr comment ${{ github.event.pull_request.number }} --body "$COMMENT_BODY" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
说明:
- 该步骤仅在触发事件为Pull Request时执行(通过
if条件控制)。 - 依赖
jq解析JSON扫描结果、gh(GitHub CLI)发布评论,自托管runner需确保支持安装这两个工具(可提前预装)。 - 你可根据需求调整评论内容,比如添加低危漏洞数量、特定漏洞详情等。
内容的提问来源于stack exchange,提问作者carlspring
相关产品推荐
相关产品推荐

