软件包仓库

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署
History
    • 在极狐GitLab 13.3 中从专业版移动至基础版。

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

软件包工作流程#

了解如何使用极狐GitLab软件包仓库构建您自己的自定义软件包工作流程:

查看软件包#

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

  1. 转到项目或群组。
  2. 转到 部署 > 软件包仓库

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

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

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

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

要了解如何创建和上传软件包,请按照您的软件包类型的说明进行操作。

与仓库进行身份验证#

身份验证取决于所使用的软件包管理器。要了解特定软件包类型支持哪些身份验证协议,请参阅身份验证协议

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

  • 个人访问令牌:使用您的用户权限进行身份验证。适合个人和本地使用软件包仓库。
  • 项目部署令牌:允许访问项目中的所有软件包。适合向许多用户授予和撤销项目访问权限。
  • 群组部署令牌:允许访问群组及其子群组中的所有软件包。适合向一组用户授予和撤销对大量软件包的访问权限。
  • 作业令牌:允许用户在运行流水线的项目中访问软件包。可以配置对其他外部项目的访问权限。
  • 如果您的组织使用双因素身份验证 (2FA),则必须使用设置为 api 范围的个人访问令牌。
  • 如果您使用 CI/CD 流水线发布软件包,则必须使用 CI/CD 作业令牌。

配置与软件包仓库的身份验证时:

  • 如果关闭Package registry 项目设置,即使您具有所有者角色,在与软件包仓库交互时也会收到 403 Forbidden 错误。
  • 如果启用了外部授权,您将无法使用部署令牌访问软件包仓库。

使用极狐GitLab CI/CD#

您可以使用极狐GitLab CI/CD将软件包构建或导入软件包仓库。

构建软件包#

您可以使用 CI_JOB_TOKEN 与极狐GitLab进行身份验证。

要开始,您可以使用可用的CI/CD 模板

有关使用极狐GitLab软件包仓库与 CI/CD 的更多信息,请参阅:

如果您使用 CI/CD 构建软件包,当您查看软件包详细信息时,将显示扩展的活动信息:

Package CI/CD activity

您可以查看哪个流水线发布了软件包,以及触发它的提交和用户。然而,历史记录仅限于给定软件包的五次更新。

导入软件包#

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

有关支持的软件包列表,请参阅从其他存储库导入软件包

减少存储使用#

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

关闭软件包仓库#

软件包仓库会自动打开。

在极狐GitLab 私有化部署实例上,您的管理员可以从极狐GitLab 侧边栏中移除 软件包和仓库 菜单项。有关更多信息,请参阅极狐GitLab软件包仓库管理

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

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

侧边栏中的 部署 > 软件包仓库 条目被移除。

软件包仓库可见性权限#

项目权限决定哪些成员和用户可以下载、推送或删除软件包。

软件包仓库的可见性独立于存储库,并且可以从项目的设置中进行控制。例如,如果您有一个公共项目并将存储库可见性设置为 Only Project Members,则软件包仓库是公开的。关闭 Package registry 开关将关闭所有软件包仓库操作。

项目可见性操作最低角色要求
公开查看软件包仓库N/A。互联网上的任何人都可以执行此操作。
公开发布软件包开发者
公开拉取软件包N/A。互联网上的任何人都可以执行此操作。
内部查看软件包仓库客人
内部发布软件包开发者
内部拉取软件包客人 (1)
私有查看软件包仓库记者
私有发布软件包开发者
私有拉取软件包记者 (1)

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

History
    • 引入于极狐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 模块仓库端点。
  • 其他群组和实例端点未完全支持。
  • 不适用于 Composer,因为 Composer 只有一个群组端点。
  • 适用于 Conan,但使用 conan search 不起作用。

审计事件#

  • Tier: 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署
History
    • 引入于极狐GitLab 17.10,使用名为 package_registry_audit_events功能标志。默认禁用。

当软件包被发布或删除时创建审计事件。命名空间所有者可以通过 GraphQL API 打开 audit_events_enabled 设置。

您可以查看审计事件: