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 角色。
要保护软件包:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 软件包和注册表。
- 展开 软件包注册表。
- 在 受保护的软件包 下,选择 添加保护规则。
- 完成字段:
- 名称模式 是您要保护的软件包名称模式。该模式可以包含通配符(
*)。 - 软件包类型 是要保护的软件包类型。
- 推送最低访问级别 是推送匹配名称模式的软件包所需的最低角色。
- 删除最低访问级别 是删除匹配名称模式的软件包所需的最低角色。
- 名称模式 是您要保护的软件包名称模式。该模式可以包含通配符(
- 选择 保护。
软件包保护规则已创建,并显示在设置中。
保护多个软件包
您可以使用通配符来使用相同的软件包保护规则保护多个软件包。 例如,您可以保护在 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 角色。
要取消保护软件包:
- 在左侧边栏,选择 搜索或转到 并找到您的项目。
- 选择 设置 > 软件包和注册表。
- 展开 软件包注册表。
- 在 受保护的软件包 下,在要删除的保护规则旁边,选择 删除 ( )。
- 在确认对话框中,选择 删除。
软件包保护规则已删除,不会出现在设置中。