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

关于Snyk Delta在Azure DevOps流水线的行为与中断配置咨询

问题场景与疑问

现有配置

我在Azure DevOps中配置了Snyk Delta用于仅检测新增漏洞,流水线脚本如下:

- script: |
    npm install -g snyk snyk-delta
    snyk auth $(SNYK_TOKEN) 
    snyk test --json --print-deps | snyk-delta --baselineOrg xxxxx-xxxxx-xxxx-xxxx- --baselineProject xxxxxxxxx-xxxxxxxxxxx-xxxxxx-xxxxxxxxxx
    snyk monitor    
  displayName: 'Ejecutar Snyk delta Test'

遇到的问题

  • 必须执行snyk monitor才能将报告同步到Snyk平台
  • 首次运行检测到新增许可证问题,无修改再次运行显示无新问题,符合预期
  • 添加存在漏洞的新库后,检测到5个新安全漏洞,但流水线未中断

疑问

  1. 每次运行流水线都会更新Snyk平台上的项目,基线会随最新扫描更新,但Snyk Delta仅支持使用项目ID而非扫描ID,该如何正确使用?
  2. 我设想的流程:①项目无漏洞→流水线成功→同步至平台;②新增带漏洞的库→中断流水线→更新基线;③再新增带漏洞的库→仅检测此次新增漏洞并中断流水线、更新基线,该流程是否正确?

解决方案与答疑

1. 解决流水线不中断问题

snyk-delta默认不会因检测到新漏洞返回非零退出码,需添加--fail-on new参数触发流水线中断。修改后的核心命令:

snyk test --json --print-deps | snyk-delta --baselineOrg <ORG_ID> --baselineProject <PROJECT_ID> --fail-on new

2. Snyk Delta基线的正确用法

Snyk Delta依赖指定项目ID对应的最新成功扫描记录作为基线,要避免每次流水线自动更新基线,需做以下调整:

  • 拆分流水线逻辑:仅在主分支/已确认无问题的分支执行snyk monitor用于更新基线;开发分支流水线仅执行snyk test + snyk-delta,以主分支的项目ID作为基线,不触发基线更新
  • 手动控制基线:当修复漏洞或确认接受现有漏洞后,手动触发主分支流水线执行snyk monitor更新基线,后续所有分支扫描都以此为基准检测新增漏洞

3. 设想流程的修正

原流程存在逻辑漏洞:步骤②中流水线因漏洞中断后,无法自动执行snyk monitor更新基线,正确流程应为:

  • ① 主分支项目无漏洞→流水线成功→执行snyk monitor更新Snyk平台基线
  • ② 开发分支新增带漏洞的库→snyk-delta检测到新漏洞,返回非零码中断流水线→修复漏洞或在Snyk平台标记漏洞为可接受→合并代码到主分支
  • ③ 主分支流水线触发,执行snyk monitor更新基线;后续再新增漏洞时,流水线以最新基线为对比,检测新增漏洞并中断,重复步骤②的修复合并流程

内容的提问来源于stack exchange,提问作者Diego Izquierdo Dussan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:22:43