Skip to main content

为存储库配置自动依赖项提交

可使用自动依赖项提交来提交存储库中的可转移依赖项数据。 这使你能够使用依赖项关系图分析这些可转移依赖项。

谁可以使用此功能?

具有管理员角色的存储库所有者、组织所有者、安全管理员和用户

关于自动依赖项提交

Note

Maven 当前仅支持自动依赖项提交。

依赖项关系图分析存储库中的清单和锁定文件,以帮助用户了解存储库所依赖的依赖项。 但是,在某些生态系统中,可转移依赖项的解析发生在生成时,GitHub 无法仅基于存储库的内容自动发现所有依赖项。

在为存储库启用自动依赖项提交时,GitHub 会自动确定存储库中的可转移依赖项,并使用 依赖项提交 API 将这些依赖项提交到 GitHub。 然后,可使用依赖项关系图报告这些依赖项。

使用自动依赖项提交将计入 GitHub Actions 分钟。 有关详细信息,请参阅“关于 GitHub Actions 的计费”。

或者,可以选择为自动依赖项提交配置自托管运行器或 GitHub 托管的 大型运行器。 有关详细信息,请参阅“将自托管运行器用于自动依赖项提交”和“将 GitHub 托管的大型运行器用于自动依赖项提交”。

先决条件

必须为存储库启用依赖项关系图才能启用自动依赖项提交。

还必须为存储库启用 GitHub Actions 才能使用自动依赖项提交。 有关详细信息,请参阅“管理存储库的 GitHub Actions 设置”。

启用自动依赖项提交

存储库管理员可以按照此过程所述的步骤为存储库启用或禁用自动依赖项提交。

组织所有者可使用安全配置为多个存储库启用自动依赖项提交。 有关详细信息,请参阅“删除自定义安全配置”。

  1. 在 GitHub 上,导航到存储库的主页面。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在边栏的“Security”部分中,单击“Code security”****。

  4. 在“依赖项关系图”下,单击“自动依赖项提交”旁边的下拉菜单,然后选择“已启用”。

为存储库启用自动依赖项提交后,GitHub 将:

  • 监视存储库所有分支上存储库根目录中 pom.xml 文件的更改。
  • 对每次更改执行自动依赖项提交。

可以通过查看存储库的“操作”选项卡来查看有关自动工作流运行的详细信息。

Note

启用选项后,第一次推送到 pom.xml 文件时将自动提交。

将自托管运行器用于自动依赖项提交

可以将自托管运行器配置为运行自动依赖项提交作业,而不是使用 GitHub Actions 基础结构。

  1. 在存储库或组织级别预配一个或多个自托管运行器。 有关详细信息,请参阅 关于自托管运行程序添加自托管的运行器。 自托管运行器必须在 Linux 或 macOS 上运行,并且必须安装 Docker。
  2. 为希望自动依赖项提交使用的每个运行器分配 dependency-submission 标签。 有关详细信息,请参阅“将标签与自托管运行程序结合使用”。
  3. 在边栏的“Security”部分中,单击“Code security”****。
  4. 在“依赖项关系图”下,单击“自动依赖项提交”旁边的下拉菜单,然后选择“为标记的运行器启用”。

启用后,自动依赖项提交作业将在自托管运行器上运行,除非:

  • 自托管运行器不可用。
  • 没有任何使用 dependency-submission 标签标记的运行器组。

Note

使用自托管运行器时,需要添加对 Maven 服务器设置文件的访问权限,以允许依赖项提交工作流连接到专用注册表。 专用注册表中的依赖项将包含在下一个 pom.xml 更新的依赖项树中。 有关 Maven 服务器设置文件的详细信息,请参阅 Maven 文档中的安全性和部署设置

使用 GitHub 托管的 大型运行器 进行自动依赖项提交

GitHub Team 或 GitHub Enterprise Cloud 用户可以使用 大型运行器 来运行自动依赖项提交作业。

  1. 使用名称 dependency-submission 在组织级别预配大型运行器。 有关详细信息,请参阅将 大型运行器 托管的运行器添加到组织
  2. 授予存储库对运行器的访问权限。 有关详细信息,请参阅允许仓库访问 大型运行器
  3. 在“依赖项关系图”下,单击“自动依赖项提交”旁边的下拉菜单,然后选择“为标记的运行器启用”。

自动依赖项提交故障排除

Maven 当前仅支持自动依赖项提交。 此功能使用 Maven 依赖关系树提交操作。 有关详细信息,请参阅 GitHub Marketplace 中 Maven 依赖关系树依赖项提交操作的文档。 如果项目使用非标准 Maven 配置,则它可能无法正确生成依赖项,并将其提交到依赖项关系图。

自动依赖项提交会尽最大努力在使用缓存操作的运行之间缓存包下载,以加快工作流。 对于自承载运行器,你可能需要在自己的基础结构内管理此缓存。 为此,你可以将环境变量 GH_DEPENDENCY_SUBMISSION_SKIP_CACHE 设置为 true,以禁用内置缓存。 有关详细信息,请参阅“在变量中存储信息”。

其他阅读材料