Help us learn about your current experience with the documentation. Take the survey.

受保护的软件包

  • Tier: 免费版、高级版、旗舰版
  • Offering: GitLab.com、GitLab 自托管、GitLab 专属

默认情况下,任何拥有至少 Developer 角色的用户都可以创建、编辑和删除软件包。添加软件包保护规则来限制哪些用户可以更改您的软件包。

GitLab 支持 npm、PyPI、Maven 和 Conan 软件包的软件包保护,但 epic 5574 提议添加更多功能和软件包格式。

当软件包被保护时,默认行为会对该软件包执行以下限制:

操作 最低角色或令牌
保护软件包 至少需要 Maintainer 角色。
推送新软件包 至少需要 推送最低访问级别 中设置的角色。
使用部署令牌推送新软件包 任何有效的部署令牌,仅当推送的软件包不匹配保护规则时。受保护的软件包不能使用部署令牌推送。
删除软件包 至少需要 删除最低访问级别 中设置的角色。

保护软件包

先决条件:

  • 您必须拥有至少 Maintainer 角色。

要保护软件包:

  1. 在左侧边栏,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 软件包和注册表
  3. 展开 软件包注册表
  4. 受保护的软件包 下,选择 添加保护规则
  5. 完成字段:
    • 名称模式 是您要保护的软件包名称模式。该模式可以包含通配符(*)。
    • 软件包类型 是要保护的软件包类型。
    • 推送最低访问级别 是推送匹配名称模式的软件包所需的最低角色。
    • 删除最低访问级别 是删除匹配名称模式的软件包所需的最低角色。
  6. 选择 保护

软件包保护规则已创建,并显示在设置中。

保护多个软件包

您可以使用通配符来使用相同的软件包保护规则保护多个软件包。 例如,您可以保护在 CI/CD 管道期间构建的所有临时软件包。

下表包含匹配多个软件包的软件包保护规则示例:

带通配符的软件包名称模式 匹配的软件包
@group/package-* @group/package-prod, @group/package-prod-sha123456789
@group/*package @group/package, @group/prod-package, @group/prod-sha123456789-package
@group/*package* @group/package, @group/prod-sha123456789-package-v1

可以对同一软件包应用多个保护规则。 如果至少有一个保护规则适用于该软件包,则该软件包受保护。

删除软件包保护规则并取消保护软件包

先决条件:

  • 您必须拥有至少 Maintainer 角色。

要取消保护软件包:

  1. 在左侧边栏,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 软件包和注册表
  3. 展开 软件包注册表
  4. 受保护的软件包 下,在要删除的保护规则旁边,选择 删除 ( remove )。
  5. 在确认对话框中,选择 删除

软件包保护规则已删除,不会出现在设置中。