如何修改Gitlab SAST流水线中各分析器生成的报告文件名?
问题1解答:可以修改产物文件名,操作方法如下
你可以通过覆盖GitLab SAST模板内置任务的后置脚本与产物配置实现自定义文件名,有两种实现方案:
方案1:单独指定特定分析器的文件名
直接在你的.gitlab-ci.yml末尾添加如下配置,单独重写bandit和semgrep任务的配置:
bandit-sast: after_script: - mv gl-sast-report.json gl-bandit-sast-report.json artifacts: paths: - gl-bandit-sast-report.json # 若仍需要GitLab原生的安全仪表盘展示结果,保留下方reports配置,否则可以删除 reports: sast: gl-bandit-sast-report.json semgrep-sast: after_script: - mv gl-sast-report.json gl-semgrep-sast-report.json artifacts: paths: - gl-semgrep-sast-report.json # 同上,需要仪表盘展示则保留 reports: sast: gl-semgrep-sast-report.json
方案2:通用动态命名(适配所有自动识别的SAST分析器)
如果不想逐个配置分析器,可以直接给所有SAST任务加全局后置逻辑,通过内置变量动态生成带任务名的报告,配置如下:
.sast-analyzer: after_script: - mv gl-sast-report.json gl-${CI_JOB_NAME}-report.json artifacts: paths: - gl-${CI_JOB_NAME}-report.json
这个方案会自动适配所有被触发的SAST分析器,不需要手动逐个声明任务。
问题2解答:不需要手动指定每个分析器,自动识别机制仍然生效
GitLab SAST模板的语言自动识别逻辑独立于任务配置覆盖规则:
- 只有当前项目符合对应分析器的语言识别规则时,对应的任务才会被注入到流水线中,你提前写的覆盖配置只会对实际触发的任务生效,未触发的任务配置不会产生任何副作用
- 如果你使用上述通用动态命名方案,完全不需要调整原有自动识别逻辑,新增语言对应的分析器时也不需要修改配置,会自动适配生成对应文件名的产物
内容的提问来源于stack exchange,提问作者Raymond C.
相关产品推荐
相关产品推荐

