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

您可以将 GitLab groups 组织成子组。您可以使用子组来:

  • 分隔内部和外部内容。因为每个子组都可以有自己的 visibility level,您可以在同一个父组下托管不同用途的组。
  • 组织大型项目。您可以使用子组来管理谁能访问源代码的某些部分。
  • 管理权限。为用户在每个 a member of 的组中分配不同的 role

子组可以:

  • 属于一个直接的父组。
  • 拥有多个子组。
  • 可以嵌套最多 20 层。
  • 使用注册到父组的 runners
    • 为父组配置的 Secrets 对子组作业可用。
    • 属于子组的项目中至少拥有 Maintainer 角色的用户可以查看注册到父组的 runners 的详细信息。

例如:

%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
accTitle: Parent and subgroup nesting
accDescr: How parent groups, subgroups, and projects nest.

    subgraph "Parent group"
      subgraph "Subgroup A"
        subgraph "Subgroup A1"
          G["Project E"]
        end
        C["Project A"]
        D["Project B"]
        E["Project C"]
      end
      subgraph "Subgroup B"
        F["Project D"]
      end
    end

查看组的子组

前置条件:

  • 要查看私有嵌套子组,您必须是该私有子组的直接或继承成员。

要查看组的子组:

  1. 在左侧边栏,选择 Search or go to 并找到您的组。
  2. 选择 Subgroups and projects 选项卡。
  3. 选择您要查看的子组。 要查看嵌套子组,请展开 ( chevron-down ) 一个子组。

公共父组中的私有子组

在层次结构列表中,带有私有子组的公共组有一个展开选项 ( chevron-down ),这表示该组有嵌套子组。所有用户都可以查看展开选项 ( chevron-down ),但只有私有子组的直接或继承成员才能查看私有组。

如果您希望保持嵌套子组存在的信息私有,您应该只将私有子组添加到私有父组中。

创建子组

前置条件:

  • 您必须拥有以下任一权限:

您不能使用顶级域名托管 GitLab Pages 子组网站。例如,subgroupname.example.io

要创建子组:

  1. 在左侧边栏,选择 Search or go to 并找到您要创建子组的组。
  2. 在父组的概览页面右上角,选择 New subgroup
  3. 填写字段。查看不能用作组名的 reserved names 列表。
  4. 选择 Create subgroup

更改谁可以创建子组

前置条件:

  • 根据组的设置,您必须至少拥有该组的 Maintainer 角色。

要更改谁可以在组中创建子组:

  • 作为拥有该组 Owner 角色的用户:
    1. 在左侧边栏,选择 Search or go to 并找到您的组。
    2. 选择 Settings > General
    3. 展开 Permissions and group features
    4. Roles allowed to create subgroups 中,选择一个选项。
    5. 选择 Save changes
  • 作为管理员:
    1. 在左侧边栏底部,选择 Admin
    2. 在左侧边栏,选择 Overview > Groups 并找到您的组。
    3. 在该组的行中,选择 Edit
    4. Allowed to create subgroups 下拉列表中,选择一个选项。
    5. 选择 Save changes

有关更多信息,请查看 permissions table

子组成员资格

当您将成员添加到组时,该成员也会被添加到该组的所有子组中。该成员的权限从组继承到所有子组。

子组成员可以是:

  1. 子组的 Direct members
  2. 从子组的父组继承的 Inherited members
  3. 与子组的顶级组 shared 的组成员。
  4. Indirect members 包括继承成员和被邀请到子组或其祖先的组成员。
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart RL
accTitle: Subgroup membership
accDescr: How users become members of a subgroup - through direct, indirect, or inherited membership.

  subgraph Group A
    A(Direct member)
    B{{Shared member}}
    subgraph Subgroup A
      H(1#46; Direct member)
      C{{2#46; Inherited member}}
      D{{Inherited member}}
      E{{3#46; Shared member}}
    end
    A-->|Direct membership of Group A\nInherited membership of Subgroup A|C
  end
  subgraph Group C
    G(Direct member)
  end
  subgraph Group B
    F(Direct member)
  end
  F-->|Group B\nshared with\nGroup A|B
  B-->|Inherited membership of Subgroup A|D
  G-->|Group C shared with Subgroup A|E

组成员的权限只能由以下人员更改:

  • 拥有该组 Owner 角色的用户。
  • 更改成员被添加到的组的配置。

确定成员资格继承

要查看成员是否从父组继承了权限:

  1. 在左侧边栏,选择 Search or go to 并找到您的组。
  2. 选择 Manage > Members。 成员的继承关系显示在 Source 列中。

示例子组 Four 的成员列表:

Group members page

在上面的截图中:

  • 五个成员可以访问组 Four
  • 用户 0 在组 Four 中拥有 Reporter 角色,并从组 One 继承了权限:
    • 用户 0 是组 One 的直接成员。
    • One 在层次结构中位于组 Four 之上。
  • 用户 1 在组 Four 中拥有 Developer 角色,并从组 Two 继承了权限:
    • 用户 0 是组 Two 的直接成员,组 Two 是组 One 的子组。
    • One / Two 在层次结构中位于组 Four 之上。
  • 用户 2 在组 Four 中拥有 Developer 角色,并从组 Three 继承了权限:
    • 用户 0 是组 Three 的直接成员,组 Three 是组 Two 的子组。组 Two 是组 One 的子组。
    • One / Two / Three 在层次结构中位于组 Four 之上。
  • 用户 3 是组 Four 的直接成员。这意味着他们直接从组 Four 获得 Maintainer 角色。
  • 管理员在组 Four 中拥有 Owner 角色并且是所有子组的成员。因此,与用户 3 一样,Source 列表明他们是直接成员。

成员可以按 继承或直接成员资格 进行筛选。

覆盖祖先组成员资格

拥有子组 Owner 角色的用户可以向其添加成员。

您不能给用户在子组中的角色低于其在父组中的角色。要覆盖用户在父组中的角色,请再次以更高的角色将用户添加到子组。

例如:

  • 如果用户 1 以 Developer 角色添加到组 Two,用户 1 在组 Two 的每个子组中都继承该角色。
  • 要给用户 1 在组 Four(在 One / Two / Three 下)中分配 Maintainer 角色,请再次以 Maintainer 角色将用户 1 添加到组 Four
  • 如果用户 1 从组 Four 中移除,用户的角色将回退到其在组 Two 中的角色。用户 1 在组 Four 中再次拥有 Developer 角色。

提及子组

在 epics、issues、commits 和 merge requests 中提及子组 (@<subgroup_name>) 会通知该组的所有直接成员。子组的继承成员不会通过提及收到通知。

提及功能与项目和组的工作方式相同,您可以选择要通知的组成员。