Help us learn about your current experience with the documentation. Take the survey.
支持的包管理器和功能
GitLab 包注册表支持每种包类型的不同功能。这种支持包括发布和拉取包、请求转发、管理重复项以及身份验证。
支持的包管理器
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
并非所有包管理器格式都可用于生产环境。
包注册表支持以下包管理器类型:
| 包类型 | 状态 |
|---|---|
| Composer | Beta |
| Conan 1 | Experiment |
| Conan 2 | Experiment |
| Debian | Experiment |
| Generic packages | Generally available |
| Go | Experiment |
| Helm | Beta |
| Maven | Generally available |
| npm | Generally available |
| NuGet | Generally available |
| PyPI | Generally available |
| Ruby gems | Experiment |
您也可以使用 API 来管理包注册表。
发布包
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
包可以发布到您的项目、组或实例中。
| 包类型 | 项目 | 组 | 实例 |
|---|---|---|---|
Maven (with mvn) |
Y | N | N |
Maven (with gradle) |
Y | N | N |
Maven (with sbt) |
N | N | N |
| npm | Y | N | N |
| NuGet | Y | N | N |
| PyPI | Y | N | N |
| Generic packages | Y | N | N |
| Terraform | Y | N | N |
| Composer | N | Y | N |
| Conan 1 | Y | N | Y |
| Conan 2 | Y | N | N |
| Helm | Y | N | N |
| Debian | Y | N | N |
| Go | Y | N | N |
| Ruby gems | Y | N | N |
拉取包
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
包可以从您的项目、组或实例中拉取。
| 包类型 | 项目 | 组 | 实例 |
|---|---|---|---|
Maven (with mvn) |
Y | Y | Y |
Maven (with gradle) |
Y | Y | Y |
Maven (with sbt) |
Y | Y | Y |
| npm | Y | Y | Y |
| NuGet | Y | Y | N |
| PyPI | Y | Y | N |
| Generic packages | Y | N | N |
| Terraform | N | Y | N |
| Composer | Y | Y | N |
| Conan 1 | Y | N | Y |
| Conan 2 | Y | N | N |
| Helm | Y | N | N |
| Debian | Y | N | N |
| Go | Y | N | Y |
| Ruby gems | Y | N | N |
请求转发
- Tier: Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
当在项目的包注册表中找不到包时,GitLab 可以将请求转发到相应的公共注册表。例如,Maven Central、npmjs 或 PyPI。
默认的转发行为因包类型而异,可能会引入 依赖混淆漏洞。
为了降低相关的安全风险:
- 验证包未被积极使用。
- 禁用请求转发:
- 实例管理员可以在 Admin 区域的 持续集成 部分 中禁用转发。
- 组所有者可以在组设置的 包和注册表 部分中禁用转发。
- 实现版本控制工具(如 Git)来跟踪包的变更。
| 包类型 | 支持请求转发 | 安全注意事项 |
|---|---|---|
Maven (with mvn) |
是(默认禁用) | 需要明确选择以保障安全。 |
Maven (with gradle) |
是(默认禁用) | 需要明确选择以保障安全。 |
Maven (with sbt) |
是(默认禁用) | 需要明确选择以保障安全。 |
| npm | 是 | 考虑为私有包禁用。 |
| NuGet | N | N |
| PyPI | 是 | 考虑为私有包禁用。 |
| Generic packages | N | N |
| Terraform | N | N |
| Composer | N | N |
| Conan 1 | N | N |
| Conan 2 | N | N |
| Helm | N | N |
| Debian | N | N |
| Go | N | N |
| Ruby gems | N | N |
删除包
当包请求被转发到公共注册表时,删除包可能会造成 依赖混淆漏洞。
如果系统尝试拉取已删除的包,请求会被转发到公共注册表。如果在公共注册表中找到同名同版本的包,则会拉取该包。存在从注册表拉取的包可能不是预期内容,甚至是恶意代码的风险。
为了降低相关的安全风险,在删除包之前您可以:
- 验证包未被积极使用。
- 禁用请求转发:
- 实例管理员可以在 Admin 区域的 持续集成 部分 中禁用转发。
- 组所有者可以在组设置的 包和注册表 部分中禁用转发。
从其他仓库导入包
您可以使用 GitLab 管道从其他仓库(如 Maven Central 或 Artifactory)导入包,使用 包导入工具。
| 包类型 | 导入器可用? |
|---|---|
Maven (with mvn) |
Y |
Maven (with gradle) |
Y |
Maven (with sbt) |
Y |
| npm | Y |
| NuGet | Y |
| PyPI | Y |
| Generic packages | N |
| Terraform | N |
| Composer | N |
| Conan 1 | N |
| Conan 2 | N |
| Helm | N |
| Debian | N |
| Go | N |
| Ruby gems | N |
允许或防止重复
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
默认情况下,GitLab 包注册表根据特定包管理器格式的默认设置,允许或防止重复。
| 包类型 | 允许重复? |
|---|---|
Maven (with mvn) |
Y(可配置) |
Maven (with gradle) |
Y(可配置) |
Maven (with sbt) |
Y(可配置) |
| npm | N |
| NuGet | Y |
| PyPI | N |
| Generic packages | Y(可配置) |
| Terraform | N |
| Composer | N |
| Conan 1 | N |
| Conan 2 | N |
| Helm | Y |
| Debian | Y |
| Go | N |
| Ruby gems | Y |
向注册表进行身份验证
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
身份验证取决于您使用的包管理器。要了解特定包类型支持的身份验证协议,请参阅 身份验证协议。
对于大多数包类型,以下身份验证令牌有效:
下表列出了特定包管理器支持的身份验证令牌:
| 包类型 | 支持的令牌 |
|---|---|
Maven (with mvn) |
个人访问、作业令牌、部署(项目或组)、项目访问 |
Maven (with gradle) |
个人访问、作业令牌、部署(项目或组)、项目访问 |
Maven (with sbt) |
个人访问、作业令牌、部署(项目或组)、项目访问 |
| npm | 个人访问、作业令牌、部署(项目或组)、项目访问 |
| NuGet | 个人访问、作业令牌、部署(项目或组)、项目访问 |
| PyPI | 个人访问、作业令牌、部署(项目或组)、项目访问 |
| Generic packages | 个人访问、作业令牌、部署(项目或组)、项目访问 |
| Terraform | 个人访问、作业令牌、部署(项目或组)、项目访问 |
| Composer | 个人访问、作业令牌、部署(项目或组)、项目访问 |
| Conan 1 | 个人访问、作业令牌、项目访问 |
| Conan 2 | 个人访问、作业令牌、项目访问 |
| Helm | 个人访问、作业令牌、部署(项目或组) |
| Debian | 个人访问、作业令牌、部署(项目或组) |
| Go | 个人访问、作业令牌、项目访问 |
| Ruby gems | 个人访问、作业令牌、部署(项目或组) |
身份验证协议
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
支持以下身份验证协议:
| 包类型 | 支持的身份验证协议 |
|---|---|
Maven (with mvn) |
头部、基本身份验证 |
Maven (with gradle) |
头部、基本身份验证 |
Maven (with sbt) |
基本身份验证(仅限 拉取包) |
| npm | OAuth |
| NuGet | 基本身份验证 |
| PyPI | 基本身份验证 |
| Generic packages | 基本身份验证 |
| Terraform | 令牌 |
| Composer | OAuth |
| Conan 1 | OAuth、基本身份验证 |
| Conan 2 | OAuth、基本身份验证 |
| Helm | 基本身份验证 |
| Debian | 基本身份验证 |
| Go | 基本身份验证 |
| Ruby gems | 令牌 |
支持的哈希类型
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
哈希值用于确保您使用的是正确的包。您可以在用户界面或通过 API 查看这些值。
包注册表支持以下哈希类型:
| 包类型 | 支持的哈希类型 |
|---|---|
Maven (with mvn) |
MD5、SHA1 |
Maven (with gradle) |
MD5、SHA1 |
Maven (with sbt) |
MD5、SHA1 |
| npm | SHA1 |
| NuGet | 不适用 |
| PyPI | MD5、SHA256 |
| Generic packages | SHA256 |
| Composer | 不适用 |
| Conan 1 | MD5、SHA1 |
| Conan 2 | MD5、SHA1 |
| Helm | 不适用 |
| Debian | MD5、SHA1、SHA256 |
| Go | MD5、SHA1、SHA256 |
| Ruby gems | MD5、SHA1、SHA256(仅 gemspec) |