关于 Dependabot 安全更新
Dependabot 安全更新让您更轻松地修复仓库中存在漏洞的依赖项。
如果您启用 Dependabot 安全更新,当仓库的依赖图中出现对某个有漏洞的依赖项的 Dependabot 警报时,Dependabot 会自动尝试修复它。欲了解更多信息,请参阅 关于 Dependabot 警报 和 配置 Dependabot 安全更新。
您可以向仓库添加一个 dependabot.yml 配置文件,以自定义 Dependabot 的行为,包括更新计划、拉取请求设置以及要监控的依赖项。欲了解更多信息,请参阅 关于 dependabot.yml 文件。随后在此文件中配置选项,告诉 Dependabot 如何保护仓库所依赖的依赖项。
有关受支持的仓库和生态系统的信息,请参阅 Dependabot 支持的生态系统和仓库。
注意
除了在相关的 Dependabot 安全更新拉取请求被合并后警报会自动关闭外,dependabot.yml 文件中指定的设置与 Dependabot 安全警报之间不存在其他交互。
Dependabot 默认会为其提交签名,即使仓库并不要求提交签名。欲了解关于已验证提交的更多信息,请参阅 关于提交签名验证。
注意
当仓库启用了 Dependabot 安全更新时,Dependabot 会自动尝试为每个拥有可用补丁的已打开 Dependabot 警报打开拉取请求,以解决 所有 这类警报。如果您希望自定义 Dependabot 为哪些警报打开拉取请求,请保持 Dependabot 安全更新 已禁用 并创建自动分流规则。欲了解更多信息,请参阅 自定义自动分流规则以优先处理 Dependabot 警报。
GitHub 可能会向因最近发布的 GitHub 安全通告而受到漏洞影响的仓库发送 Dependabot 警报。欲了解更多信息,请参阅 在 GitHub Advisory Database 中浏览安全通告。
Dependabot 会检查是否可以在不破坏仓库依赖图的前提下,将有漏洞的依赖项升级到已修复的版本。随后,Dependabot 会创建一个拉取请求,将该依赖项升级到包含补丁的最小版本,并将该拉取请求关联到 Dependabot 警报,或者在警报上报告错误。欲了解更多信息,请参阅 Dependabot 错误。
只有在您已启用依赖图和 Dependabot 警报的仓库中,才能使用 Dependabot 安全更新功能。您将在完整的依赖图中看到每个被识别为有漏洞的依赖项对应的 Dependabot 警报。然而,安全更新仅会针对在清单文件或锁定文件中声明的依赖项触发。欲了解更多信息,请参阅 关于依赖图。
注意
对于 npm,Dependabot 会创建拉取请求,将显式声明的依赖项更新到安全版本,即使这意味着需要更新父依赖或其他依赖,甚至删除已不再被父依赖需要的子依赖。对于其他生态系统,如果更新间接或传递依赖项同样需要更新父依赖,Dependabot 将无法进行更新。欲了解更多信息,请参阅 Dependabot 错误。
您可以启用相关功能——Dependabot 版本更新,使 Dependabot 在检测到过时依赖时,自动创建拉取请求将清单更新至该依赖的最新版本。欲了解更多信息,请参阅 关于 Dependabot 版本更新。
当 Dependabot 发起拉取请求时,这些请求可能是针对 安全 或 版本 更新的。
- Dependabot 安全更新 是自动化的拉取请求,帮助您更新已知存在漏洞的依赖项。
- Dependabot 版本更新 是自动化的拉取请求,即使没有漏洞也能保持依赖项为最新版本。要查看版本更新的状态,请转到仓库的 Insights(洞察)选项卡,然后选择 Dependency Graph(依赖图),再选择 Dependabot。
如果您启用 Dependabot 安全更新,部分配置也可能影响为 Dependabot 版本更新 创建的拉取请求。这是因为某些配置设置对两类更新都是通用的。欲了解更多信息,请参阅 自定义 Dependabot 安全更新的拉取请求。
Dependabot 创建的拉取请求可能会触发运行操作的工作流。欲了解更多信息,请参阅 使用 GitHub Actions 自动化 Dependabot。
Dependabot 安全更新可以修复 GitHub Actions 中的有漏洞依赖。当启用安全更新时,Dependabot 会自动创建拉取请求,将工作流中使用的有漏洞 GitHub Actions 更新到最低的已修补版本。
关于分组安全更新
为进一步减少您可能看到的拉取请求数量,您可以启用分组安全更新,将同一包生态系统下的一组依赖合并(每个生态系统各一组)。随后 Dependabot 将只创建一个拉取请求,同时将该组中尽可能多的有漏洞依赖更新到安全版本。
对于安全更新,Dependabot 仅在特定条件和配置下,按生态系统将不同目录中的依赖进行分组。Dependabot 不会 将不同包生态系统的依赖合并,也 不会 将安全更新与版本更新合并在同一个拉取请求中。
您可以通过以下一种或两种方式为 Dependabot 安全更新启用分组拉取请求。
- 若要在跨目录、按生态系统的范围内尽可能多地将可用安全更新合并为一个请求,请在仓库的 “Advanced Security”(高级安全)设置中,或在组织的 “Global settings”(全局设置)→Advanced Security 中启用分组功能。
- 若需更细粒度的分组控制(例如按包名、开发/生产依赖、SemVer 级别,或跨多个目录的生态系统分组),请在仓库的
dependabot.yml配置文件中添加相应的配置选项。
注意
如果您已在 dependabot.yml 文件中为 Dependabot 安全更新配置了分组规则,所有可用更新将依据您指定的规则进行分组。只有在组织或仓库层面同时启用了分组安全更新设置时,Dependabot 才会对 dependabot.yml 中未配置的目录进行跨目录分组。
欲了解更多信息,请参阅 配置 Dependabot 安全更新。
关于兼容性评分
Dependabot 安全更新可能会附带兼容性评分,以告知您更新依赖是否可能导致项目出现破坏性更改。这些评分来源于其他公共仓库的 CI 测试,当相同安全更新在这些仓库中生成时进行统计。兼容性评分表示在特定版本之间进行更新时,CI 运行通过的比例。
关于 Dependabot 更新的自动停用
当仓库维护者停止响应 Dependabot 拉取请求时,Dependabot 会暂时暂停更新,并向您发出提示,详情请参阅 不再生成 Dependabot 更新拉取请求。
关于 Dependabot 安全更新的通知
您可以在 GitHub 上筛选通知,仅显示 Dependabot 安全更新。欲了解更多信息,请参阅 管理收件箱中的通知。