为自托管运行器配置网络访问
如果您的自托管运行器在受限的出站 Internet 访问的防火墙后面运行,您必须将某些 URL 添加到白名单,以便自动提交依赖项。 所需的 URL 取决于存储库使用的生态系统。
所有生态系统的必需 URL
所有自动依赖项提交工作流都需要这些 URL:
-
`https://github.com`—访问和下载操作所需的 GitHub。 -
`https://api.github.com`— 必需用于 GitHub API 的访问。 -
`https://*.githubusercontent.com`—下载操作源代码及版本(包括 `raw.githubusercontent.com`、`github-releases.githubusercontent.com` 和 `objects.githubusercontent.com`)所必需的。
特定于生态系统的 URL
根据所使用的生态系统,可能需要允许列出其他 URL。
Go
-
`https://go.dev`- 用于下载 Go 工具链。 -
`https://golang.org`- Go 下载的备用域。 -
`https://proxy.golang.org`- 官方 Go 模块代理,用于在依赖项检测期间下载 Go 模块。
注意
可通过actions/go-versions``https://raw.githubusercontent.com访问存储库,该存储库已在一般要求中介绍。
Java(马文和格雷德尔)
-
`https://repo.maven.apache.org`- 用于下载依赖项的 Maven Central 存储库。 -
`https://api.adoptium.net`—用于下载 Adoptium/Temurin JDK 发行版(`actions/setup-java` 使用的默认发行版)。
如果使用其他 JDK 分发版,可能还需要:
-
`https://aka.ms` 和 `https://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重定向到.NET下载位置的 URL 缩短器。 -
`https://builds.dotnet.microsoft.com` — 用于.NET SDK 和运行时下载的主要源。 -
`https://ci.dot.net` — 用于 .NET 构建的辅助源。
注意
.NET autosubmission 使用的 microsoft/component-detection 工具从 GitHub 发布中下载,并且该工具已在一般要求(https://github.com 和 https://*.githubusercontent.com)中涵盖。
Python
-
`https://python.org` — 用于下载Python解释器。
注意
存储库actions/python-versions和版本microsoft/component-detection通过一般要求中已经涵盖的访问路径(https://*.githubusercontent.com和https://github.com)进行访问。
使用 GitHub-hosted 大型运行器 进行自动依赖项提交
GitHub Team 或 GitHub Enterprise Cloud 用户可以使用 大型运行器 来运行自动依赖项提交作业。
- 使用名称
dependency-submission在组织级别预配大型运行器。 有关详细信息,请参阅将 大型运行器 托管的运行器添加到组织。 - 授予存储库对运行器的访问权限。 有关详细信息,请参阅允许仓库访问 大型运行器。
- 在“依赖项关系图”下,单击“自动依赖项提交”旁边的下拉菜单,然后选择为已标记的运行器启用。
自动提交依赖项故障排查
自动依赖项提交会尽最大努力在使用缓存操作的运行之间缓存包下载,以加快工作流。 对于自承载运行器,您可能需要在自己的基础结构内管理此缓存。 为此,您可以将环境变量 GH_DEPENDENCY_SUBMISSION_SKIP_CACHE 设置为 true,以禁用内置缓存。 有关详细信息,请参阅“在变量中存储信息”。
清单重复数据删除
存储库可以使用多个方法提交依赖项,这可能导致多次扫描同一包清单,这可能会导致每次扫描的输出不同。 依赖项关系图使用去重逻辑来分析输出,为每个清单文件优先选取最准确的信息。
依赖项关系图会依据以下优先级规则,仅显示每个清单文件的一个实例。
- 用户提交具有最高优先级,因为它们通常是在项目构建期间创建的,包含最完整的信息。****
- 如果存在来自不同检测器的多个手动快照,这些快照将根据关联器按字母顺序进行排序,并且会采用第一个快照。
- 如果有两个使用相同检测器的关联器,已解析的依赖项将合并。 有关关联器和检测器的详细信息,请参阅 适用于依赖项提交的 REST API 终结点。
- 自动提交具有第二高的优先级,因为它们同样是在项目构建期间创建的,但并非由用户提交。****
- 静态分析结果会在没有其他可用数据的情况下被采用。****
包生态系统特定信息
Maven 项目
对于 Maven 项目,自动依赖项提交会运行 开源分支的 Maven 依赖项树依赖项提交。 此分支使 GitHub 能够与上游仓库保持同步,并保留一些仅适用于自动提交的更改。 该分支的源可在 advanced-security/maven-dependency-submission-action 中查看。
如果存储库的依赖项似乎不准确,请检查生成的上一个依赖项关系图的时间戳是否与 pom.xml 文件的最后一次更改匹配。 时间戳在存储库的 Dependabot alerts 选项卡中的警报表中可见。如果推送更新 pom.xml 的提交,会触发依赖项树提交操作的新运行,并强制重新生成该存储库的依赖项关系图。
Gradle 项目
对于 Gradle 项目,自动依赖项提交是从 gradle/actions 运行的开源 Gradle 动作的一个分支。 该分支可在 actions/gradle-build-tools-actions 中查看。 你可以在仓库的“Actions”选项卡下查看自动提交操作的结果****。每次运行都将标记为“自动依赖项提交 (Gradle)”,其输出将包含提交到 API 的操作的 JSON 有效负载。
.NET项目
.NET自动提交动作使用开源component-detection项目用作依赖项检测的引擎。 它支持 .NET 8.x、9.x 和 10.x。 如果存储库的 dependabot.yml将 nuget 定义为 package-ecosystem,或者存储库的根目录中存在受支持的清单文件,则.NET自动提交运行。 受支持的清单文件包括 .sln、.csproj、packages.config、.vbproj、.vcxproj 和 .fsproj。
Python项目
Python使用 open source component-detection 项目作为其基础图形生成引擎。 仅当存储库根目录中有requirements.txt文件时,Python的自动提交作才会运行。 Python自动提交当前不支持专用包;requirements.txt 中引用的包未公开发布将导致自动提交作失败。
注意
此作使用 actions/setup-python 安装Python。 必须在您的存储库中包含一个 .python-version 文件,以指定要安装的 Python 版本。