依赖变更评审是什么
对 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 的直接推送将无法进入主分支。
仓库未开启依赖图谱时检查拿不到差异数据:先在仓库设置里启用,策略才有判据;企业版实例的入口与云端略有差异,按各自文档确认。