{{< details >}}
- Tier: 基础版,专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
{{< history >}}
- 引入于极狐GitLab 17.1,使用名为
packages_protected_packages
的功能标志。默认禁用。 - 在极狐GitLab 17.5 中为 JihuLab.com 启用。
- 在极狐GitLab 17.6 中 GA。功能标志
packages_protected_packages
被移除。 - 在极狐GitLab 17.11 中增加了属性
minimum_access_level_for_delete
,使用名为packages_protected_packages_delete
的功能标志。默认禁用。
{{< /history >}}
此 API 管理软件包的保护规则。
列出软件包保护规则
从项目中获取软件包保护规则列表。
GET /api/v4/projects/:id/packages/protection/rules
支持的属性:
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 项目的 ID 或 URL 编码路径。 |
如果成功,将返回 200
和软件包保护规则列表。
可能返回的状态码:
-
200 OK
: 软件包保护规则列表。 -
401 Unauthorized
: 访问令牌无效。 -
403 Forbidden
: 用户没有权限列出此项目的软件包保护规则。 -
404 Not Found
: 项目未找到。
示例请求:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules"
示例响应:
[
{
"id": 1,
"project_id": 7,
"package_name_pattern": "@flightjs/flight-package-0",
"package_type": "npm",
"minimum_access_level_for_delete": "owner",
"minimum_access_level_for_push": "maintainer"
},
{
"id": 2,
"project_id": 7,
"package_name_pattern": "@flightjs/flight-package-1",
"package_type": "npm",
"minimum_access_level_for_delete": "owner",
"minimum_access_level_for_push": "maintainer"
}
]
创建软件包保护规则
为项目创建一个软件包保护规则。
POST /api/v4/projects/:id/packages/protection/rules
支持的属性:
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 项目的 ID 或 URL 编码路径。 |
package_name_pattern |
string | 是 | 受保护规则保护的软件包名称。例如 @my-scope/my-package-* 。允许使用通配符 * 。 |
package_type |
string | 是 | 受保护规则保护的软件包类型。例如 npm 。 |
minimum_access_level_for_delete |
string | 是 | 删除软件包所需的极狐GitLab 最低访问级别。有效值包括 null 、owner 或 admin 。如果值为 null ,默认最低访问级别为 maintainer 。当 minimum_access_level_for_push 未设置时必须提供。位于一个名为 packages_protected_packages_delete 的特性标志后面。默认禁用。 |
minimum_access_level_for_push |
string | 是 | 推送软件包所需的极狐GitLab 最低访问级别。有效值包括 null 、maintainer 、owner 或 admin 。如果值为 null ,默认最低访问级别为 developer 。当 minimum_access_level_for_delete 未设置时必须提供。 |
如果成功,将返回 201
和创建的软件包保护规则。
可能返回的状态码:
-
201 Created
: 软件包保护规则已成功创建。 -
400 Bad Request
: 软件包保护规则无效。 -
401 Unauthorized
: 访问令牌无效。 -
403 Forbidden
: 用户没有权限创建软件包保护规则。 -
404 Not Found
: 项目未找到。 -
422 Unprocessable Entity
: 软件包保护规则无法创建,例如,package_name_pattern
已被占用。
示例请求:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules" \
--data '{
"package_name_pattern": "package-name-pattern-*",
"package_type": "npm",
"minimum_access_level_for_delete": "owner",
"minimum_access_level_for_push": "maintainer"
}'
更新软件包保护规则
为项目更新一个软件包保护规则。
PATCH /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id
支持的属性:
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 项目的 ID 或 URL 编码路径。 |
package_protection_rule_id |
integer | 是 | 要更新的软件包保护规则的 ID。 |
package_name_pattern |
string | 否 | 受保护规则保护的软件包名称。例如 @my-scope/my-package-* 。允许使用通配符 * 。 |
package_type |
string | 否 | 受保护规则保护的软件包类型。例如 npm 。 |
minimum_access_level_for_delete |
string | 否 | 删除软件包所需的极狐GitLab 最低访问级别。有效值包括 null 、owner 或 admin 。如果值为 null ,默认最低访问级别为 maintainer 。当 minimum_access_level_for_push 未设置时必须提供。位于一个名为 packages_protected_packages_delete 的特性标志后面。默认禁用。 |
minimum_access_level_for_push |
string | 否 | 推送软件包所需的极狐GitLab 最低访问级别。有效值包括 null 、maintainer 、owner 或 admin 。如果值为 null ,默认最低访问级别为 developer 。当 minimum_access_level_for_delete 未设置时必须提供。 |
如果成功,将返回 200
和更新的软件包保护规则。
可能返回的状态码:
-
200 OK
: 软件包保护规则已成功更新。 -
400 Bad Request
: 更新无效。 -
401 Unauthorized
: 访问令牌无效。 -
403 Forbidden
: 用户没有权限更新软件包保护规则。 -
404 Not Found
: 项目未找到。 -
422 Unprocessable Entity
: 软件包保护规则无法更新,例如,package_name_pattern
已被占用。
示例请求:
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32" \
--data '{
"package_name_pattern": "new-package-name-pattern-*"
}'
删除软件包保护规则
从项目中删除一个软件包保护规则。
DELETE /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id
支持的属性:
属性 | 类型 | 必需 | 描述 |
---|---|---|---|
id |
integer/string | 是 | 项目的 ID 或 URL 编码路径。 |
package_protection_rule_id |
integer | 是 | 要删除的软件包保护规则的 ID。 |
如果成功,将返回 204 No Content
。
可能返回的状态码:
-
204 No Content
: 软件包保护规则已成功删除。 -
400 Bad Request
:id
或package_protection_rule_id
缺失或无效。 -
401 Unauthorized
: 访问令牌无效。 -
403 Forbidden
: 用户没有权限删除软件包保护规则。 -
404 Not Found
: 项目或软件包保护规则未找到。
示例请求:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32"