受保护的标签 API
有效访问级别
当前级别为:
-
0
:无权限 -
30
:开发者角色 -
40
:维护者角色
列出受保护标签
- 部署 key 信息引入于极狐GitLab 16.0。
从项目中获取受保护标签的列表。此功能使用分页参数 page
和 per_page
来限制受保护标签的列表。
GET /projects/:id/protected_tags
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id |
integer/string | yes | 授权用户拥有的 ID 或 URL 编码的项目路径 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/protected_tags"
响应示例:
[
{
"name": "release-1-0",
"create_access_levels": [
{
"id":1,
"access_level": 40,
"access_level_description": "Maintainers"
},
{
"id": 2,
"access_level": 40,
"access_level_description": "Deploy key",
"deploy_key_id": 1
}
]
},
...
]
获取单个受保护标签或通配符受保护标签
获取单个受保护标签或通配符受保护标签。
GET /projects/:id/protected_tags/:name
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id |
integer/string | yes | 授权用户拥有的 ID 或 URL 编码的项目路径 |
name |
string | yes | 标签或通配符的名称 |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/protected_tags/release-1-0"
响应示例:
{
"name": "release-1-0",
"create_access_levels": [
{
"id": 1,
"access_level": 40,
"access_level_description": "Maintainers"
}
]
}
保护仓库标签
deploy_key_id
配置引入于极狐GitLab 17.5。
使用通配符保护标签保护单个仓库标签或多个项目仓库标签。
POST /projects/:id/protected_tags
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/protected_tags" -d '{
"allowed_to_create" : [
{
"user_id" : 1
},
{
"access_level" : 30
}
],
"create_access_level" : 30,
"name" : "*-stable"
}'
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id |
integer/string | yes | 授权用户拥有的 ID 或 URL 编码的项目路径 |
name |
string | yes | 标签或通配符的名称 |
create_access_level |
string | no | 允许创建的访问级别(默认为 40 ,维护者角色) |
allowed_to_create |
array | no | 允许创建标签的访问级别阵列,每个由格式为 {user_id: integer} 、{group_id: integer} 或 {access_level: integer} 的哈希进行描述 |
响应示例:
{
"name": "*-stable",
"create_access_levels": [
{
"id": 1,
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
]
}
用户和群组访问示例
allowed_to_create
数组中的元素应采用以下形式:{user_id: integer}
、{group_id: integer}
或 {access_level: integer}
。每个用户必需具有项目的访问权限,而且每个群组必需已与项目共享。这些访问级别允许更精细地控制受保护标签的创建权限。有关更多信息,请参阅向受保护标签添加群组。
此示例请求演示了如何创建一个受保护标签,该标签允许特定用户和群组创建访问权限:
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "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"
示例响应包括:
- 一个受保护标签,名称为
"*-stable"
。 -
create_access_levels
为1
,针对 ID 为10
的用户, -
create_access_levels
为2
,针对 ID 为20
的群组,
{
"name": "*-stable",
"create_access_levels": [
{
"id": 1,
"access_level": null,
"user_id": 10,
"group_id": null,
"access_level_description": "Administrator"
},
{
"id": 2,
"access_level": null,
"user_id": null,
"group_id": 20,
"access_level_description": "Example Create Group"
}
]
}
取消保护仓库标签
取消保护特定的受保护标签或通配符受保护标签。
DELETE /projects/:id/protected_tags/:name
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/5/protected_tags/*-stable"
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
id |
integer/string | yes | 授权用户拥有的 ID 或 URL 编码的项目路径 |
name |
string | yes | 标签名称 |