受保护标签 API
- Tier: 基础版,专业版,旗舰版
- Offering: JihuLab.com,私有化部署
有效的访问级别
这些访问级别被识别:
1 0:无访问权限 1 30:开发者角色 1 40:维护者角色
列出受保护的标签
History
- 部署密钥信息在极狐GitLab 16.0 中引入。
从项目中获取受保护标签的列表。此功能接受分页参数 page 和 per_page 来限制受保护标签的列表。
plaintextGET /projects/:id/protected_tags
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目的 ID 或 URL 编码路径。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags"
示例响应:
json1[ 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]
获取单个受保护标签或通配符受保护标签
获取单个受保护标签或通配符受保护标签。
plaintextGET /projects/:id/protected_tags/:name
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目的 ID 或 URL 编码路径。 |
| name | 字符串 | 是 | 标签或通配符的名称。 |
shellcurl --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags/release-1-0"
示例响应:
json1{ 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 中引入。
保护单个仓库标签或多个项目仓库标签,使用通配符受保护标签。
plaintextPOST /projects/:id/protected_tags
shell1curl --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,维护者角色。 |
示例响应:
json1{ 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} 的形式。每个用户必须有项目访问权限,每个群组必须共享此项目。这些访问级别允许对受保护标签访问进行更细粒度的控制。有关更多信息,请参见添加群组到受保护标签。
此示例请求演示如何创建允许特定用户和群组创建访问权限的受保护标签:
shellcurl --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。
json1{ 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}
取消保护仓库标签
取消保护给定的受保护标签或通配符受保护标签。
plaintextDELETE /projects/:id/protected_tags/:name
shellcurl --request DELETE \ --header "PRIVATE-TOKEN: <your_access_token>" \ --url "https://gitlab.example.com/api/v4/projects/5/protected_tags/*-stable"
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | 整数或字符串 | 是 | 项目的 ID 或 URL 编码路径。 |
| name | 字符串 | 是 | 标签名称。 |