我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

排查 Dependabot 错误

有时,Dependabot 无法提出拉取请求以更新依赖项。 您可以查看错误并取消阻止 Dependabot。

本文内容

注: Dependabot 版本更新 目前处于测试阶段,可能会有变动。 要使用测试版功能,请在配置文件中登记,告诉 Dependabot 为您保留哪些依赖项。 详情请参阅“启用和禁用版本更新。”

关于 Dependabot 错误

Dependabot 提出拉取请求,以更新依赖项。 Dependabot 可能会针对版本更新和/或安全更新提出拉取请求,具体取决于仓库的配置方式。 您可以按与任何其他拉取请求相同的方式管理这些拉取请求,但也有一些额外的可用命令。 有关启用 Dependabot 依赖项更新的更多信息,请参阅“配置 Dependabot 安全更新”和“启用和禁用版本更新”。

如果有任何因素阻止 Dependabot 提出拉取请求,则报告为错误。

使用 Dependabot 安全更新 调查错误

当 Dependabot 被阻止创建拉取请求以修复 Dependabot 警报时,它会在警报上发布错误消息。 Dependabot 警报 视图显示尚未解决的所有警报列表。 要访问警报视图,请单击仓库 Security(安全)选项卡上的 Dependabot 警报。 如果旨在修复有漏洞依赖项的拉取请求已生成,则警报将包括指向该拉取请求的链接。

Dependabot 警报 视图显示拉取请求链接

有三个原因可能导致警报中没有拉取请求链接:

  1. Dependabot 安全更新 未对仓库启用。
  2. 警报针对未在锁文件中显式定义的间接或过渡依赖项。
  3. 某个错误阻止了 Dependabot 创建拉取请求。

如果某个错误阻止了 Dependabot 创建拉取请求,您可以通过单击警报来显示错误详情。

Dependabot 警报显示阻止创建拉取请求的错误

使用 Dependabot 版本更新 调查错误

当 Dependabot 被阻止创建拉取请求以更新生态系统中的依赖项时,它将在清单文件中发布错误图标。 由 Dependabot 管理的清单文件列于 Dependabot 选项卡上。 要访问此选项卡,请在仓库的 Insights(洞察)选项卡上单击 Dependency graph(依赖项图),然后单击 Dependabot 选项卡。

Dependabot 视图显示错误

要查看任何清单文件的日志文件,请单击 Last checked TIME ago(上次检查时间以前)链接。 当您显示一个带有错误符号的清单(例如上面截图中的 Maven)的日志文件时,也会显示任何错误。

Dependabot 版本更新错误和日志

了解 Dependabot 错误

安全更新拉取请求用于将有漏洞依赖项升级到包含漏洞修复的最低版本。 而版本更新拉取请求用于将依赖项升级到包清单文件和 Dependabot 配置文件允许的最新版本。 因此,某些错误特定于一种类型的更新。

Dependabot 无法将依赖项更新到无漏洞版本

仅限安全更新。 Dependabot 无法创建拉取请求以将有漏洞依赖项更新到安全版本,而又不破坏此仓库依赖项图中的其他依赖项。

每个具有依赖项的应用程序都有一个依赖关系图,即应用程序直接或间接依赖的每个包版本的定向非循环图。 每次更新依赖项时,必须解决此图,否则将无法构建应用程序。 当生态系统具有深刻而复杂的依赖关系图(例如 npm 和 RubyGems)时,如果不升级整个生态系统,往往难以升级单个依赖项。

避免这个问题的最佳办法是跟上最新发布的版本,例如启用版本更新。 这增加了通过不破坏依赖关系图的简单升级解决一个依赖项中的漏洞的可能性。 更多信息请参阅“启用和禁用版本更新”。

Dependabot 无法更新到所需的版本,因为已经为最新版本打开了拉取请求

仅限安全更新。 Dependabot 不会创建拉取请求以将有漏洞依赖项更新到安全版本,因为已存在更新此依赖项的打开拉取请求。 如果在一个依赖项中检测到漏洞,但已经存在将该依赖项更新到最新版本的打开拉取请求时,您将会看到此错误。

有两个选项:您可以查看打开的拉取请求,确认更改安全后合并它,或者关闭该拉取请求并触发新的安全更新拉取请求。 更多信息请参阅“手动触发 Dependabot 拉取请求”。

Dependabot 在更新过程中超时

Dependabot 评估所需更新和准备拉取请求所用的时间超过了允许的最大时间。 此错误一般只出现在具有许多清单文件的大型仓库,例如具有数百个 package.json 文件的 npm 或 yarn 单仓库项目。 对 Composer 生态系统的更新也需要较长的时间来评估,可能会超时。

此错误难以解决。 如果版本更新超时,您可以使用 allow 参数来指定更新最重要的依赖项,或者使用 ignore 参数从更新中排除某些依赖项。 更新配置可能使 Dependabot 能够在规定时间内检查版本更新并生成请求。

如果安全更新超时,您可以通过保持依赖项更新(例如,启用版本更新)来减少更新需要。 更多信息请参阅“启用和禁用版本更新”。

Dependabot 无法再打开拉取请求

Dependabot 生成的打开拉取请求数量存在限制。 如果达到此限制,将无法打开新的拉取请求,并报告此错误。 解决此错误的最佳方法是审查并合并一些打开的拉取请求。

安全性和版本更新拉取请求有各自的限制,因此打开版本更新拉取请求不会阻止安全更新拉取请求的创建。 安全更新拉取请求的限制是 10。 默认情况下,版本更新的限制是 5,但您可以使用配置文件中的 open-pull-requests-limit 参数来更改它。 更多信息请参阅“依赖项更新的配置选项。”

解决此错误的最佳方法是合并或关闭一些现有拉取请求,然后手动触发新的拉取请求。 更多信息请参阅“手动触发 Dependabot 拉取请求”。

Dependabot 无法解析依赖项文件

如果 Dependabot 尝试检查是否需要更新仓库中的依赖项引用,但无法访问一个或多个依赖项文件,则操作将失败,并返回错误消息“Dependabot can't resolve your LANGUAGE dependency files(无法解析语言依赖项文件)”。 API 错误类型为 git_dependencies_not_reachable

要让 Dependabot 成功更新依赖项引用,请确保所有引用依赖项都托管在可访问的位置。

仅限版本更新。在运行安全性或版本更新时,有些生态系统必须能够解决来自其来源的所有依赖项,以验证版本更新是否成功。 如果清单或锁定文件包含任何私有依赖项,Dependabot 必须能够访问这些依赖项所在的位置。 组织所有者可以授予 Dependabot 访问包含同一个组织内项目依赖项的私有仓库. 更多信息请参阅“管理组织的安全和分析设置”。

目前,Dependabot 版本更新不支持包含私人注册表中依赖项的清单或锁定文件,或者私有 GitHub 仓库中属于不同于依赖项目的组织。 此外,Dependabot 不支持所有包管理器的 GitHub 私有依赖项。 更多信息请参阅“关于 Dependabot 版本更新”。

手动触发 Dependabot 拉取请求

如果取消阻止了 Dependabot,您可以手动触发新的尝试来创建拉取请求。

  • 安全更新—显示 Dependabot 警报,查看您修复的错误,然后单击 Create Dependabot security update(创建安全更新)
  • 版本更新—在仓库的 Insights(洞察)选项卡上单击 Dependency graph(依赖项图),然后单击 Dependabot 选项卡。 单击 Last checked TIME ago(上次检查时间以前),查看 Dependabot 在上次检查版本更新时生成的日志文件。 单击 Check for Updates(检查更新)

此文档对您有帮助吗?

Privacy policy

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。