受保护标签 API

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

有效的访问级别#

这些访问级别被识别:

1 0:无访问权限 1 30:开发者角色 1 40:维护者角色

列出受保护的标签#

History
    • 部署密钥信息在极狐GitLab 16.0 中引入。

从项目中获取受保护标签的列表。此功能接受分页参数 pageper_page 来限制受保护标签的列表。

plaintext
GET /projects/:id/protected_tags
属性类型必需描述
id整数或字符串项目的 ID 或 URL 编码路径
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags"

示例响应:

json
1[ 2 { 3 "name": "release-1-0", 4 "create_access_levels": [ 5 { 6 "id":1, 7 "access_level": 40, 8 "access_level_description": "Maintainers" 9 }, 10 { 11 "id": 2, 12 "access_level": 40, 13 "access_level_description": "Deploy key", 14 "deploy_key_id": 1 15 } 16 ] 17 }, 18 ... 19]

获取单个受保护标签或通配符受保护标签#

获取单个受保护标签或通配符受保护标签。

plaintext
GET /projects/:id/protected_tags/:name
属性类型必需描述
id整数或字符串项目的 ID 或 URL 编码路径
name字符串标签或通配符的名称。
shell
curl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags/release-1-0"

示例响应:

json
1{ 2 "name": "release-1-0", 3 "create_access_levels": [ 4 { 5 "id": 1, 6 "access_level": 40, 7 "access_level_description": "Maintainers" 8 } 9 ] 10}

保护仓库标签#

History
    • deploy_key_id 配置在极狐GitLab 17.5 中引入。

保护单个仓库标签或多个项目仓库标签,使用通配符受保护标签。

plaintext
POST /projects/:id/protected_tags
shell
1curl --request POST \ 2 --header "PRIVATE-TOKEN: <your_access_token>" \ 3 --url "https://gitlab.example.com/api/v4/projects/5/protected_tags" \ 4 --data '{ 5 "allowed_to_create" : [ 6 { 7 "user_id" : 1 8 }, 9 { 10 "access_level" : 30 11 } 12 ], 13 "create_access_level" : 30, 14 "name" : "*-stable" 15}'
属性类型必需描述
id整数或字符串项目的 ID 或 URL 编码路径
name字符串标签或通配符的名称。
allowed_to_create数组允许创建标签的访问级别数组,每个由 {user_id: integer}{group_id: integer}{deploy_key_id: integer}{access_level: integer} 的哈希描述。仅适用于专业版和旗舰版。
create_access_level字符串允许创建的访问级别。默认:40,维护者角色。

示例响应:

json
1{ 2 "name": "*-stable", 3 "create_access_levels": [ 4 { 5 "id": 1, 6 "access_level": 30, 7 "access_level_description": "Developers + Maintainers" 8 } 9 ] 10}

用户和群组访问示例#

allowed_to_create 数组中的元素应采用 {user_id: integer}{group_id: integer}{deploy_key_id: integer}{access_level: integer} 的形式。每个用户必须有项目访问权限,每个群组必须共享此项目。这些访问级别允许对受保护标签访问进行更细粒度的控制。有关更多信息,请参见添加群组到受保护标签

此示例请求演示如何创建允许特定用户和群组创建访问权限的受保护标签:

shell
curl --request POST \ --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags?name=*-stable&allowed_to_create%5B%5D%5Buser_id%5D=10&allowed_to_create%5B%5D%5Bgroup_id%5D=20"

示例响应包括:

1 名为 "*-stable" 的受保护标签。 1 create_access_levels 的 ID 1 为用户 ID 10。 1 create_access_levels 的 ID 2 为群组 ID 20

json
1{ 2 "name": "*-stable", 3 "create_access_levels": [ 4 { 5 "id": 1, 6 "access_level": null, 7 "user_id": 10, 8 "group_id": null, 9 "access_level_description": "管理员" 10 }, 11 { 12 "id": 2, 13 "access_level": null, 14 "user_id": null, 15 "group_id": 20, 16 "access_level_description": "示例创建群组" 17 } 18 ] 19}

取消保护仓库标签#

取消保护给定的受保护标签或通配符受保护标签。

plaintext
DELETE /projects/:id/protected_tags/:name
shell
curl --request DELETE \ --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags/*-stable"
属性类型必需描述
id整数或字符串项目的 ID 或 URL 编码路径
name字符串标签名称。