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 个人访问、作业令牌、部署(项目或组)

当您配置包注册表的身份验证时:

  • 如果 包注册表 项目设置被 关闭,即使您拥有 Owner 角色,在与包注册表交互时也会收到 403 Forbidden 错误。
  • 如果启用了 外部授权,您无法使用部署令牌访问包注册表。
  • 如果您的组织使用双因素认证(2FA),您必须使用设置了 api 范围的个人访问令牌。
  • 如果您使用 CI/CD 管道发布包,必须使用 CI/CD 作业令牌。

身份验证协议

  • 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)