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
查看组的子组
前置条件:
- 要查看私有嵌套子组,您必须是该私有子组的直接或继承成员。
要查看组的子组:
- 在左侧边栏,选择 Search or go to 并找到您的组。
- 选择 Subgroups and projects 选项卡。
- 选择您要查看的子组。 要查看嵌套子组,请展开 ( ) 一个子组。
公共父组中的私有子组
在层次结构列表中,带有私有子组的公共组有一个展开选项 ( ),这表示该组有嵌套子组。所有用户都可以查看展开选项 ( ),但只有私有子组的直接或继承成员才能查看私有组。
如果您希望保持嵌套子组存在的信息私有,您应该只将私有子组添加到私有父组中。
创建子组
前置条件:
您不能使用顶级域名托管 GitLab Pages 子组网站。例如,subgroupname.example.io。
要创建子组:
- 在左侧边栏,选择 Search or go to 并找到您要创建子组的组。
- 在父组的概览页面右上角,选择 New subgroup。
- 填写字段。查看不能用作组名的 reserved names 列表。
- 选择 Create subgroup。
更改谁可以创建子组
前置条件:
- 根据组的设置,您必须至少拥有该组的 Maintainer 角色。
要更改谁可以在组中创建子组:
- 作为拥有该组 Owner 角色的用户:
- 在左侧边栏,选择 Search or go to 并找到您的组。
- 选择 Settings > General。
- 展开 Permissions and group features。
- 从 Roles allowed to create subgroups 中,选择一个选项。
- 选择 Save changes。
- 作为管理员:
- 在左侧边栏底部,选择 Admin。
- 在左侧边栏,选择 Overview > Groups 并找到您的组。
- 在该组的行中,选择 Edit。
- 从 Allowed to create subgroups 下拉列表中,选择一个选项。
- 选择 Save changes。
有关更多信息,请查看 permissions table。
子组成员资格
当您将成员添加到组时,该成员也会被添加到该组的所有子组中。该成员的权限从组继承到所有子组。
子组成员可以是:
- 子组的 Direct members。
- 从子组的父组继承的 Inherited members。
- 与子组的顶级组 shared 的组成员。
- 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 角色的用户。
- 更改成员被添加到的组的配置。
确定成员资格继承
要查看成员是否从父组继承了权限:
- 在左侧边栏,选择 Search or go to 并找到您的组。
- 选择 Manage > Members。 成员的继承关系显示在 Source 列中。
示例子组 Four 的成员列表:
在上面的截图中:
- 五个成员可以访问组 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>) 会通知该组的所有直接成员。子组的继承成员不会通过提及收到通知。
提及功能与项目和组的工作方式相同,您可以选择要通知的组成员。