软件包库

使用 GitLab 软件包库,您可以将极狐GitLab 用作各种支持的包管理器的私有或公开库。 您可以发布和共享包,这些包可以作为下游项目的依赖项使用。

查看软件包

您可以查看项目或群组的软件包。

  1. 进入项目或群组。
  2. 进入 软件包和镜像库 > 软件包库

您可以在此页面上搜索、排序和过滤包。您可以通过从浏览器复制和粘贴 URL 来共享您的搜索结果。

您还可以找到用于配置包管理器或安装特定软件包的有用代码片段。

当您查看群组中的软件包时:

  • 显示发布到群组的所有项目。
  • 仅显示您可以访问的项目。
  • 如果项目是私有的,或者您不是该项目的成员,则不会显示。

身份验证

身份验证取决于正在使用的包管理器。有关更多信息,请参阅有关您要使用的特定包格式的文档。

对于大多数包类型,以下凭证类型是有效的:

  • 个人访问令牌:使用您的用户权限进行身份验证。适合个人和本地使用软件包库。
  • 项目部署令牌:允许访问项目中的所有包。适合向许多用户授予和撤销项目访问权限。
  • 群组部署令牌:允许访问群组及其子组中的所有包。适合授予和撤销对用户集的大量包的访问权限。
  • 作业令牌:允许运行流水线的用户访问运行作业的项目中的包。可以配置对其他外部项目的访问。
  • 如果您的组织使用两因素身份验证(2FA),您必须使用具有 api 范围的个人访问令牌。
  • 如果您使用 CI/CD 构建包,您必须使用 CI 作业令牌。
note 如果在项目的 设置 > 通用 > 可见性、项目功能、权限 中禁用了 “软件包和镜像库” 功能,您将收到 403 Forbidden 响应。当启用外部授权时,使用部署令牌访问软件包库是不可用的。

使用 GitLab CI/CD 构建包

您可以使用 GitLab CI/CD 来构建包。

构建软件包

您可以使用 CI_JOB_TOKEN 来进行身份验证。

对于通过 CI/CD 来使用极狐GitLab 软件包仓库的更多信息,可以查看:

如果您在使用 CI/CD 构建软件包,您可以在查看软件包详细信息时查看扩展活动信息:

Package CI/CD activity

您可以查看哪个流水线在发布软件包,以及触发该流水线的提交和用户。但是,历史记录仅限于给定软件包的最多五次更新。

要导入软件包

如果您已经在其他仓库中构建了包,您可以使用 软件包导入器 将它们导入到您的极狐GitLab 软件包仓库。

对于支持的软件包列表,可查阅从其他仓库导入软件包

减少存储使用

有关减少软件包库存储使用的信息,请参阅减少软件包库存储使用

禁用软件包库

软件包库自动启用。

如果您使用的是私有化部署实例,您的管理员可以从侧栏中删除菜单项 软件包和镜像库

您还可以专门为您的项目删除软件包库:

  1. 在您的项目中,转到 设置 > 通用
  2. 展开 可见性、项目功能、权限 部分并禁用 软件包 功能。
  3. 单击 保存修改

软件包和镜像库 > 软件包库 条目从侧边栏中删除。

软件包库可见性权限

项目级权限决定下载、推送或删除包等操作。

软件包库的可见性独立于仓库,无法通过项目设置进行控制。例如,如果您有一个公开项目并将仓库可见性设置为仅项目成员,则软件包库是公开的。但是,禁用软件包库会禁用所有软件包库操作。

项目可见性 操作 所需的最小 角色
Public 查看软件包仓库 n/a,所有在此网站上的人都可以执行此操作
Public 发布软件包 报告者
Public 拉取软件包 n/a,所有在此网站上的人都可以执行此操作
Internal 查看软件包仓库 访客
Internal 发布软件包 报告者
Internal 拉取软件包 访客 (1)
Private 查看软件包仓库 报告者
Private 发布软件包 报告者
Private 拉取软件包 报告者 (1)

允许任何人来从软件包仓库拉取

  • 引入于极狐GitLab 15.7。
  • 在极狐GitLab 17.4 中,支持 NuGet 群组端点。
  • 在极狐GitLab 17.5 中,支持 Maven 群组端点。
  • 在极狐GitLab 17.5 中,支持 Terraform 模块命名空间端点。

要允许任何人都能拉取软件包仓库,而不管项目的可见性:

  1. 在左侧导航栏,选择 搜索或前往 并找到您的私有或内部项目。
  2. 选择 设置 > 通用
  3. 展开 可见性,项目功能,权限
  4. 打开 允许任何人来从软件包仓库拉取 开关。
  5. 选择 保存更改

网络上的任何人都可以访问该项目的软件包仓库。

禁止任何人拉取

先决条件:

  • 您必须是管理员。

要全局禁用 允许任何人来从软件包仓库拉取 开关:

匿名下载被禁用,即使项目启用了 允许任何人来从软件包仓库拉取 开关。

当允许任何人从软件包仓库拉取时,有一些已知问题:

  • 支持的项目端点。
  • 支持的 NuGet 群组端点。然而,由于 NuGet 客户端发送的身份验证凭据,匿名下载不允许。只有 GitLab 用户可以从软件包仓库中拉取,即使这个特性启用了。
  • 支持的 Maven 群组端点。
  • 支持的 Terraform 模块命名空间端点。
  • 其他群组和实例端点不完全支持。支持的群组端点是提议的 epic 14234
  • 它不适用于 Composer,因为 Composer 只有一个群组端点。
  • 它适用于 Conan,但是使用 conan search 不起作用。