Help us learn about your current experience with the documentation. Take the survey.

受保护标签 API

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

使用此 API 来管理您仓库的受保护标签

有效的访问级别

以下访问级别被识别:

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

列出受保护标签

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

GET /projects/:id/protected_tags
属性 类型 必需 描述
id integer or string yes 项目的 ID 或 URL 编码路径
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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 or string yes 项目的 ID 或 URL 编码路径
name string yes 标签或通配符的名称。
curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "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"
    }
  ]
}

保护仓库标签

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

POST /projects/:id/protected_tags
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/5/protected_tags" \
  --data '{
   "allowed_to_create" : [
      {
         "user_id" : 1
      },
      {
         "access_level" : 30
      }
   ],
   "create_access_level" : 30,
   "name" : "*-stable"
}'
属性 类型 必需 描述
id integer or string yes 项目的 ID 或 URL 编码路径
name string yes 标签或通配符的名称。
allowed_to_create array no 允许创建标签的访问级别数组,每个元素可以是 {user_id: integer}{group_id: integer}{deploy_key_id: integer}{access_level: integer} 形式的哈希。仅限 Premium 和 Ultimate 版本。
create_access_level string no 允许创建的访问级别。默认值:40,对应维护者角色。

示例响应:

{
  "name": "*-stable",
  "create_access_levels": [
    {
      "id": 1,
      "access_level": 30,
      "access_level_description": "Developers + Maintainers"
    }
  ]
}

用户和组访问的示例

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

此示例请求演示了如何创建一个受保护标签,允许特定用户和组创建访问:

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"

示例响应包括:

  • 名称为 "*-stable" 的受保护标签。
  • ID 为 1create_access_levels,对应 ID 为 10 的用户。
  • ID 为 2create_access_levels,对应 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>" \
  --url "https://gitlab.example.com/api/v4/projects/5/protected_tags/*-stable"
属性 类型 必需 描述
id integer or string yes 项目的 ID 或 URL 编码路径
name string yes 标签的名称。

相关主题