如何获取GitLab中含子组成员的所有群组可访问用户数据?
GitLab:获取群组全部可访问用户的方法
问题背景
Group1有2名直接成员,Group2有4名直接成员,将Group2添加为Group1的成员群组后,6名用户都能访问Group1,但List all members of a group API仅返回直接/继承的已分配条目(包含Group2这个群组),无法直接拿到所有6个用户的信息。
解决步骤
要获取所有有权访问Group1的用户,需要分两步调用API并合并结果:
- 获取Group1的所有直接/继承成员
调用带include_inherited=true参数的API,拿到Group1的直接用户和作为成员的Group2:curl --header "PRIVATE-TOKEN: <你的访问令牌>" "https://你的GitLab地址/api/v4/groups/Group1/members?include_inherited=true" - 获取子群组的成员
遍历第一步的返回结果,筛选出类型为group的条目(即Group2),调用该群组的成员API:curl --header "PRIVATE-TOKEN: <你的访问令牌>" "https://你的GitLab地址/api/v4/groups/Group2/members" - 合并去重
将两次获取的用户列表合并,以用户ID为唯一标识去重,最终得到所有6名拥有Group1访问权限的用户。
额外说明
- 访问令牌需要具备
read_group权限,否则无法获取成员数据 - 如果存在多层群组嵌套(比如Group2还关联了其他群组),需要递归处理所有子群组的成员
- 若用脚本实现,可以用用户ID做键,避免重复添加同一用户
内容的提问来源于stack exchange,提问作者cloudy
相关产品推荐
相关产品推荐

