首页/开发/CI/CD 与发布速查/依赖变更评审门禁(Dependency Review)
质量门禁与回滚51 条

依赖变更评审门禁(Dependency Review)

对 PR 中新增或升级的依赖做专项检查:已知漏洞、许可证变化与降级风险;GitHub 的 dependency-review-action 可在 PR 上直接阻断高危引入。

CI/CD 与发布速查开发更新于 2026-10-13

依赖变更评审是什么

对 PR 中的依赖差异做专项门禁:识别本次新增、升级或降级的依赖,结合漏洞库与许可证规则给出放行或阻断结论。数据来自依赖图谱与锁文件差异,因此仓库要开启依赖图谱并提交完整锁文件。与全量依赖扫描互补——只看差异让噪声更低、评审更快,适合挂在每个 PR 上。GitHub 生态用 actions/dependency-review-action 在检查里直接阻断。

基本信息

检查对象本次 PR 的依赖差异(新增、升级、降级)
常见策略拒绝新增高危漏洞依赖,禁止降级,许可证黑名单
工具actions/dependency-review-action,可配合 Dependabot/Renovate
输出PR 评论给出依赖差异与放行或阻断结论
生效条件检查需加入分支保护的必需状态才真正拦得住

典型使用场景

  • 拦截高危引入:新依赖带已知高危漏洞时 PR 直接失败
  • 许可证合规:deny 清单内的许可证(如 GPL-3.0、AGPL-3.0)
  • 防降级:被锁定的版本在 PR 里被降回旧版时阻断
  • 配合机器人:Dependabot/Renovate 提的自动升级也走同一门禁
  • 审计留痕:PR 评论区沉淀依赖差异记录,便于追溯
  • 组织统一:策略按组织模板下发到各仓库,避免逐仓维护漂移

GitHub Actions 配置

GitHub Actions 配置
permissions:
  contents: read
  pull-requests: write            # 允许在 PR 写总结评论
steps:
  - uses: actions/checkout@v4
  - uses: actions/dependency-review-action@v4
    with:
      fail-on-severity: high      # 高危及以上直接失败
      deny-licenses: GPL-3.0, AGPL-3.0   # 命中即拒绝

常用配置项

配置项作用取值示例
fail-on-severity漏洞严重度阈值,达到即失败low/moderate/high/critical
deny-licenses黑名单:命中即拒绝GPL-3.0, AGPL-3.0
allow-licenses白名单模式:只放行列表内MIT, Apache-2.0
把该检查加入分支保护的必需状态:绕过 PR 的直接推送将无法进入主分支。
仓库未开启依赖图谱时检查拿不到差异数据:先在仓库设置里启用,策略才有判据;企业版实例的入口与云端略有差异,按各自文档确认。

易错点

  • 只看漏洞不看许可证:合规风险从依赖变更中引入,许可证规则要同步配置
  • 策略过严导致正常升级被拦:需要保留带理由的豁免通道并定期复核
  • 未加入分支保护:检查失败也能合并,门禁形同虚设
  • 只在个别仓库启用:新仓库没继承策略,建议用组织级模板统一注入
  • 豁免长期不复核:临时放行不设到期时间,容易沉淀成永久例外,给豁免加复核日期

数据来源与参考

  • GitHub Docs(dependency-review-action)
  • GitHub Docs《About dependency review》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌