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

受保护的标签

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

受保护的 标签

  • 允许控制谁有权限创建标签。
  • 创建后防止意外更新或删除。

每条规则允许您匹配以下任一内容:

  • 单个标签名称。
  • 通配符以同时控制多个标签。

此功能是从 受保护的分支 演变而来的。

要创建或删除受保护的标签,您必须在该受保护的标签的 允许创建或删除 列表中。

配置受保护的标签

前提条件:

  • 您必须拥有项目的 Maintainer(维护者)角色或更高权限。
  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。

  2. 选择 设置 > 仓库

  3. 展开 受保护的标签

  4. 选择 添加新

  5. 要保护单个标签,选择 标签,然后从下拉列表中选择您的标签。

  6. 要保护所有名称匹配字符串的标签:

    1. 选择 标签
    2. 输入用于标签匹配的字符串。支持通配符 (*)。
    3. 选择 创建通配符
  7. 允许创建 中,选择可以创建受保护标签的角色。

    在 GitLab Premium 和 Ultimate 中,您还可以将组或单个用户添加到 允许创建 中。

  8. 选择 保护

受保护的标签(或通配符)会显示在 受保护的标签 列表中。

向受保护的标签添加组

要将组或子组的成员设置为允许创建受保护标签:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。

  2. 选择 设置 > 仓库

  3. 展开 受保护的标签

  4. 将组添加到以下字段:

    # 允许组成员创建受保护标签
    允许创建: @group-x

组继承和资格

%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
    accTitle: Diagram of group inheritance for protected tags
    accDescr: If a project is shared with a group, the group members inherit permissions for protected tags.
    A[Parent group X] -->|owns| B[Project A]
    A -->|contains| C[Subgroup Y]
    B -->|shared with| C
    C -->|members inherit permissions| B

在此示例中:

  • 父组 X (group-x) 拥有项目 A。
  • 父组 X 还包含一个子组,子组 Y (group-x/subgroup-y)。
  • 项目 A 与子组 Y 共享。

受保护标签权限的合格组有:

  • 项目 A:组 X 和子组 Y,因为项目 A 与子组 Y 共享。

与组共享项目以获得受保护标签权限

您可以将项目与组或子组共享,以便其成员有资格获得受保护标签权限。

%%{init: { "fontFamily": "GitLab Sans" }}%%
graph LR
    accTitle: Diagram of project sharing for protected tag permissions
    accDescr: Sharing a project with a group affects whether their members can have protected tag permissions.
    A[Parent group X] -->|owns| B[Project A]
    A -->|also contains| C[Subgroup Y]
    C -.->D{Share Project A<br/>with Subgroup Y?} -.->|yes| E[Members of Subgroup Y<br/>can have protected<br/>tag permissions]
    D{Share Project A<br/>with Subgroup Y?} -.->|no| F[Members of Subgroup Y<br />cannot have protected<br/>tag permissions]
    E -.->|Add Subgroup Y<br/> to protected tag settings| I[Subgroup Y members<br/>can create tags] -.-> B
    F -.-> |Add Subgroup Y<br/> to protected tag settings| J[Settings will not<br/>take effect] -.-> B

要授予子组 Y 成员对项目 A 的访问权限,您必须将项目与该子组共享。 直接将子组添加到受保护标签设置中是无效的,并且不适用于子组成员。

要使组拥有受保护标签权限,项目必须直接与该组共享。 从父组继承的项目成员身份不足以获得受保护标签权限。

通配符受保护标签

您可以指定通配符受保护标签,它会保护所有匹配该通配符的标签。例如:

通配符受保护标签 匹配的标签
v* v1.0.0, version-9.1
*-deploy march-deploy, 1.0-deploy
*gitlab* gitlab, gitlab/v1
* v1.0.1rc2, accidental-tag

两个不同的通配符可能会匹配同一个标签。例如,*-stableproduction-* 都会匹配 production-stable 标签。 在这种情况下,如果这些受保护标签中的任何一个都有类似 允许创建 的设置,那么 production-stable 也会继承此设置。

如果您选择受保护标签的名称,GitLab 会显示所有匹配标签的列表。

防止创建与分支同名的标签

同名标签和分支可能包含不同的提交。如果您的标签和分支使用相同的名称,运行 git checkout 命令的用户可能会检出 标签 qa,而他们本意是想检出 分支 qa。作为额外的安全措施,避免创建与分支同名的标签。混淆这两者可能导致潜在的安全或操作问题。

要防止此问题:

  1. 确定您不希望用作标签的分支名称。

  2. 配置受保护标签 中所述,创建一个受保护标签:

    • 对于 名称,提供一个名称,例如 stable。您也可以创建一个通配符,如 stable-* 来匹配多个名称,如 stable-v1stable-v2
    • 对于 允许创建,选择 无人
    • 选择 保护

用户仍然可以使用受保护的名称创建分支,但不能创建标签。

允许部署密钥创建受保护标签

您可以允许 部署密钥 创建受保护标签。

前提条件:

  • 部署密钥必须为您的项目启用。项目部署密钥在创建时默认启用。但是,公共部署密钥必须被授予对项目的 访问权限
  • 部署密钥必须对您的项目仓库具有 写入权限
  • 部署密钥的所有者必须至少对项目具有读取权限。
  • 部署密钥的所有者还必须是项目的成员。

要允许部署密钥创建受保护标签:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 设置 > 仓库
  3. 展开 受保护的标签
  4. 标签 下拉列表中,选择您要保护的标签。
  5. 允许创建 列表中,选择部署密钥。
  6. 选择 保护

在受保护标签上运行流水线

创建受保护标签的权限决定了用户是否可以:

  • 启动和运行 CI/CD 流水线。
  • 执行与这些标签相关联的作业操作。

这些权限确保只有授权用户才能触发和管理受保护标签的 CI/CD 流程。

删除受保护标签

您可以使用 GitLab API 或 GitLab 用户界面手动删除受保护标签。

前提条件:

  • 您必须在 允许创建或删除 列表中。

操作步骤:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 代码 > 标签
  3. 在要删除的标签旁边,选择 删除 ( remove )。
  4. 在确认对话框中,输入标签名称并选择 是的,删除受保护标签

受保护标签只能通过 GitLab UI 或 API 删除。 这些保护措施可以防止您通过本地 Git 命令或第三方 Git 客户端意外删除标签。

相关主题