跳至主要内容

自动依赖提交

自动依赖提交的网络访问要求、故障排除及生态系统特定行为。

为自托管运行器配置网络访问

如果您的自托管运行器位于防火墙后且对外互联网访问受限,必须在白名单中添加特定 URL,以实现自动依赖提交。所需的 URL 取决于仓库使用的生态系统。

所有生态系统的必需 URL

这些 URL 是所有自动依赖提交工作流的必需项

  • https://github.com——用于访问 GitHub 并下载 Action。
  • https://api.github.com——用于访问 GitHub API。
  • https://*.githubusercontent.com——用于下载 Action 源代码和发布文件(包括 raw.githubusercontent.comgithub-releases.githubusercontent.comobjects.githubusercontent.com)。

生态系统特定的 URL

根据您使用的生态系统,可能需要在白名单中添加额外的 URL。

Go

  • https://golang.ac.cn——用于下载 Go 工具链。
  • https://golang.ac.cn——Go 下载的备用域名。
  • https://proxy.golang.org——官方 Go 模块代理,用于在依赖检测期间下载 Go 模块。

注意

actions/go-versions 仓库通过 https://raw.githubusercontent.com 访问,该域名已在通用要求中覆盖。

Java(Maven 与 Gradle)

  • https://repo.maven.apache.org——Maven Central 仓库,用于下载依赖。
  • https://api.adoptium.net——用于下载 Adoptium/Temurin JDK(actions/setup-java 使用的默认发行版)。

如果您使用其他 JDK 发行版,可能还需要

  • https://aka.mshttps://download.microsoft.com——用于 Microsoft Build of OpenJDK(注意:aka.ms 也用于 .NET 下载)。
  • https://download.oracle.com——用于 Oracle JDK。
  • https://api.azul.com——用于 Azul Zulu OpenJDK。

.NET(C#、F#、Visual Basic)

  • https://aka.ms——Microsoft 的 URL 缩短服务,会重定向到 .NET 下载位置。
  • https://builds.dotnet.microsoft.com——.NET SDK 与运行时下载的主要源。
  • https://ci.dot.net——.NET 构建的次要源。

注意

.NET 自动提交使用的 microsoft/component-detection 工具从 GitHub Release 下载,这已在通用要求(https://github.comhttps://*.githubusercontent.com)中覆盖。

Python

  • https://pythonlang.cn——用于下载 Python 解释器。

注意

actions/python-versions 仓库以及 microsoft/component-detection 的 Release 通过已在通用要求中覆盖的 URL(https://*.githubusercontent.comhttps://github.com)访问。

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

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

  1. 在组织层面 provision 一个名为 dependency-submission 的更大运行器。更多信息,请参阅 将更大运行器添加到组织
  2. 授予您的仓库访问该运行器的权限。更多信息,请参阅 允许仓库访问更大运行器
  3. 在 “Dependency graph” 下,点击 “Automatic dependency submission” 旁的下拉菜单,然后选择 Enabled for labeled runners

排查自动依赖提交问题

自动依赖提交会尽力使用 Cache Action 在运行之间缓存包下载,以加快工作流。对于自托管运行器,您可能希望在自己的基础设施中管理此缓存。为此,可通过将环境变量 GH_DEPENDENCY_SUBMISSION_SKIP_CACHE 设置为 true 来禁用内置缓存。更多信息,请参阅 在变量中存储信息

清单去重

一个仓库可以使用多种依赖提交方式,这可能导致相同的包清单被多次扫描,且每次扫描的输出可能不同。依赖关系图使用去重逻辑解析这些输出,并优先采用每个清单文件中最准确的信息。

依赖关系图仅显示每个清单文件的一个实例,使用以下优先级规则。

  1. 用户提交具有最高优先级,因为它们通常在构件构建期间创建,包含最完整的信息。
    • 如果来自不同检测器的手动快照有多个,它们会按 correlator 的字母顺序排序,使用第一个。
    • 如果两个 correlator 使用相同的检测器,则会合并已解析的依赖项。有关 correlator 和 detector 的更多信息,请参阅 依赖提交的 REST API 端点
  2. 自动提交拥有第二高的优先级,因为它们也在构件构建期间创建,但不是由用户提交的。
  3. 静态分析结果在没有其他数据时使用。

生态系统特定的包信息

Maven 项目

对于 Maven 项目,自动依赖提交会运行 Maven Dependency Tree Dependency Submission 的开源分支。该分支使 GitHub 能够保持与上游仓库同步,并维护仅适用于自动提交的更改。分支源码位于 advanced-security/maven-dependency-submission-action

如果仓库的依赖看起来不准确,请检查上一次依赖图构建的时间戳是否与 pom.xml 的最新修改时间匹配。时间戳可在仓库 Dependabot 选项卡的告警表格中看到。提交一次更新 pom.xml 的 commit 将触发 Dependency Tree Submission Action 的新运行,并强制重新构建该仓库的依赖图。

Gradle 项目

对于 Gradle 项目,自动依赖提交运行来自 gradle/actions 的开源 Gradle Action 的分支。该分支位于 actions/gradle-build-tools-actions。您可以在仓库的 Actions 选项卡下查看自动提交 Action 的结果。每一次运行都会标记为 “Automatic Dependency Submission (Gradle)”,其输出中会包含该 Action 向 API 提交的 JSON 负载。

.NET 项目

.NET 自动提交 Action 使用开源项目 component-detection 作为依赖检测引擎,支持 .NET 8.x、9.x 与 10.x。当仓库的 dependabot.ymlnuget 定义为 package-ecosystem,或根目录中存在受支持的清单文件(.sln.csprojpackages.config.vbproj.vcxproj.fsproj)时,即会运行 .NET 自动提交。

Python 项目

Python 使用开源项目 component-detection 作为其图生成引擎。只有在仓库根目录存在 requirements.txt 文件时,Python 自动提交才会运行。当前不支持私有包;requirements.txt 中引用的未公开可用的包会导致自动提交 Action 失败。

注意

此 Action 使用 actions/setup-python 安装 Python。您必须在仓库中包含 .python-version 文件,以指定要安装的 Python 版本。

© . This site is unofficial and not affiliated with GitHub, Inc.