Note
必须选择在 GitHub Actions 上运行 Dependabot。 GitHub 的未来版本将删除选择加入并始终在 GitHub Actions 上运行 Dependabot 的功能。 有关详细信息,请参阅“关于 GitHub Actions 运行器上的 Dependabot”。
关于 GitHub Actions 运行器上的 Dependabot
默认情况下,Dependabot updates 使用 GitHub 中内置的 Dependabot 应用程序运行。 可以改为选择在 GitHub Actions 上运行 Dependabot updates,以利用更好的性能以及提高 Dependabot updates 作业的可见性和控制。
使用 GitHub Actions 运行器可以更轻松地识别 Dependabot 作业错误,并手动检测和排查失败的运行。 还可以使用 GitHub Actions API 和 Webhook 将 Dependabot 集成到 CI/CD 管道中,以检测 Dependabot 作业状态(例如运行失败),并执行下游处理。 有关详细信息,请参阅“GitHub Actions 的 REST API 终结点”和“Webhook 事件和有效负载”。
可以使用以下方法在 GitHub Actions 上运行 Dependabot:
- GitHub 托管的运行器
- Larger runners。 这些运行器由 GitHub 托管,具有高级功能,例如更多的 RAM、CPU 和磁盘空间。 有关详细信息,请参阅“关于较大的运行器”。
- 自托管运行程序
不支持将专用网络与 Azure 虚拟网络 (VNET) 或 Actions 运行器控制器 (ARC) 配合使用。
Tip
在 GitHub 托管和自托管运行器上运行 Dependabot 不会计入包含的 GitHub Actions 分钟。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。
在 GitHub Actions 上启用 Dependabot 可能会增加帐户中运行的并发作业数。 如果需要,使用企业计划的客户可请求更高的并发作业数限制。 有关详细信息,请通过 GitHub 支持门户 联系我们,或联系销售代表。
如果要在 GitHub Actions 运行器上使用 Dependabot,并且限制对组织或存储库的专用资源的访问,则可能需要更新允许的 IP 地址列表。 例如,如果当前将对专用资源的访问权限限制为 Dependabot 使用的 IP 地址,则应更新允许列表以使用源自元 API 终结点的 GitHub 托管的运行器 IP 地址。 有关详细信息,请参阅“元数据的 REST API 终结点”。
在 GitHub 托管的运行器上启用或禁用 Dependabot
本节仅适用于标准 GitHub 托管的运行器,而不适用于较大的运行器。
如果存在以下任一情况,则在用户帐户或组织中创建的新存储库将自动配置为在 GitHub Actions 上运行 Dependabot:
- Dependabot 已安装并启用,GitHub Actions 已启用且正在使用中。
- 为组织启用“GitHub Actions 运行器上的 Dependabot”设置。
对于现有存储库,可以选择在 GitHub Actions 上运行 Dependabot,如下所示。
GitHub 的未来版本将删除在 GitHub Actions 上禁用运行 Dependabot 的功能。
如果限制对组织或存储库的专用资源的访问,则在 GitHub Actions 运行器上启用 Dependabot 之前,可能需要更新允许的 IP 地址列表。 可以更新 IP 允许列表以使用 GitHub 托管的运行器 IP 地址(而不是 Dependabot IP 地址),该地址源自元 REST API 终结点。
Warning
不应依赖 GitHub Actions IP 地址对专用注册表进行身份验证。 这些 GitHub Actions 地址不仅由 GitHub 使用,也不应信任进行身份验证。 相反,请使用自托管运行器来确保更好地控制网络访问。 有关详细信息,请参阅“在自托管运行器上管理 Dependabot”。
请注意,禁用并重新启用“GitHub Actions 运行器上的 Dependabot”设置不会触发新的 Dependabot 运行。
为存储库启用或禁用
可以为公共或专用存储库管理 GitHub Actions 上的 Dependabot。
-
在 GitHub.com 上,导航到存储库的主页。
-
在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。
-
在边栏的“安全性”部分中,单击“ 代码安全性和分析”。
-
在“Dependabot”下的“操作运行器上的 Dependabot”右侧,单击启用以启用该功能,或单击禁用以将其禁用。
为组织启用或禁用
可为组织中的所有现有存储库启用 GitHub Actions 上的 Dependabot。
下次触发 Dependabot 作业时,仅更新具有以下配置的存储库,以在 GitHub Actions 上运行 Dependabot。
- 在存储库中启用 Dependabot。
- 在存储库中启用 GitHub Actions。
如果组织中的存储库启用了 Dependabot,但 GitHub Actions 已禁用,则 Dependabot 不会在 GitHub Actions 上运行,但将继续使用内置 Dependabot 应用程序运行。
- 在 GitHub 的右上角,选择个人资料照片,然后单击 “你的组织”。
- 在组织旁边,单击“设置”。
- 在边栏的“安全”部分中,单击 代码安全,然后单击全局设置。
- 在“Dependabot”下,选中“操作运行器上的 Dependabot”以启用该功能,或取消选中该按钮以将其禁用。
有关详细信息,请参阅“配置组织的全局安全设置”。
在 大型运行器 上启用或禁用 Dependabot
如果遇到 Dependabot 超时和内存不足错误,则可能需要使用 大型运行器,因为可以为这些运行器配置更多资源。
Note
只能_在组织级别_为 Dependabot 启用 大型运行器。 GitHub 将按常规操作运行器定价向组织收费。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。
- 将 大型运行器 添加到组织,并确保指定的名称为
dependabot
。 有关详细信息,请参阅“管理较大的运行器”。 - 让组织选择加入自托管运行器。 有关详细信息,请参阅“在自托管运行器上管理 Dependabot”。 此步骤是必需的,因为它可确保将来的 Dependabot 作业将在具有
dependabot
名称的较大 GitHub 托管的运行器上运行。
管理 GitHub Actions 运行器上的 Dependabot
当 GitHub Actions 作业上的 Dependabot 运行时,可以直接从 Dependabot 作业日志查看工作流运行历史记录。 有关详细信息,请参阅“查看 Dependabot 作业日志”。
还可以从存储库中的“操作”选项卡导航到 Dependabot 工作流运行。 有关详细信息,请参阅“查看工作流程运行历史记录”。
若要重新运行 Dependabot version updates 或 Dependabot security updates 作业,请使用下面的相应过程。 不能像对其他 GitHub Actions 工作流和作业那样,使用存储库中的“操作”选项卡,在 GitHub Actions 上重新运行 Dependabot 作业。 无法在组织的 GitHub Actions 使用指标中查看 Dependabot updates 工作流和作业的用法数据。
重新运行 Dependabot version updates 作业
-
在 GitHub.com 上,导航到存储库的主页。
-
在存储库名称下,单击 “见解”。
-
在左侧边栏中,单击“依赖项关系图”。
-
在“依赖项关系图”下,单击“Dependabot”。
-
在你感兴趣的清单文件名称的右侧,单击“最近更新作业****”。
-
在受影响的清单文件右侧,单击“检查更新”以重新运行 Dependabot version updates 作业,并检查该生态系统的依赖项的新更新。
重新运行 Dependabot security updates 运行
- 在 GitHub.com 上,导航到存储库的主页。
- 在存储库名称下,单击“ 安全性”。
- 在左边栏的“漏洞警报”下,单击“Dependabot”。
- 在“Dependabot”下,单击要查看的警报。
- 在显示警报的错误详细信息的部分中,单击“重试”以重新运行 Dependabot security updates 作业。
Dependabot 触发现有工作流程时的故障疑难解答
为 GitHub.com 设置 Dependabot 更新后,当现有工作流由 Dependabot 事件触发时,你可能会看到失败。
默认情况下,由 Dependabot 从 push
、pull_request
、pull_request_review
或 pull_request_review_comment
事件中触发的 GitHub Actions 工作流运行被视为从存储库分支中打开。 与其他参与者触发的工作流不同,这意味着它们会接收一个只读 GITHUB_TOKEN
,并且无权访问任何通常可用的机密。 这将导致尝试写入仓库的任何工作流程在由 Dependabot 触发时失败。
有三种方法可以解决此问题:
- 可以更新工作流,使其不再由 Dependabot 使用如下表达式触发:
if: github.actor != 'dependabot[bot]'
。 有关详细信息,请参阅“对工作流和操作中的表达式求值”。 - 可以修改工作流以使用包含
pull_request_target
的两步过程,该过程没有这些限制。 有关详细信息,请参阅“通过 GitHub Actions 自动化 Dependabot”。 - 可为由 Dependabot 触发的工作流提供对机密的访问权限,并允许
permissions
术语增加GITHUB_TOKEN
的默认范围。 有关详细信息,请参阅“通过 GitHub Actions 自动化 Dependabot”和“GitHub Actions 的工作流语法”。