我正在尝试通过Gitlab API(v4)在我的GitLab-CE实例中查找不活动的成员。
“(参与)活动”的标准之一是给定用户是任何项目还是组的成员。
虽然似乎可以通过Web界面(管理员区域用户概述页面上的Groups and projects
标签)轻松获得此信息,但我无法通过API找到该信息。
我目前发现的唯一方法是,遍历所有项目(组),并检查用户是否是其中的成员。
这让我感到非常缓慢(因为可能有成千上万的项目),所以我正在寻找一种更直接的方法来查询系统中user
所属的所有项目。
答案 0 :(得分:0)
与doc(https://docs.gitlab.com/ce/api/members.html)中一样,您可以使用:
GET /groups/:id/members
GET /projects/:id/members
仅获取直接添加到组/项目中的成员
或:
GET /groups/:id/members/all
GET /projects/:id/members/all
获取所有成员(甚至是从上述组继承的成员)
---编辑关于@Nico问题---
为了知道用户是否为项目成员,@umläute测试的解决方案是对项目成员进行迭代,然后对所有子组进行迭代,直到到达用户为止。
Given \fu\bar\project_p
With project_p.id = 1
bar.id = 10
fu.id = 100
Is user 'Nico' a member of project_p ?
GET /projects/1/members returns ('Paul') / No
GET /groups/10/members returns ('Marc', 'Jean') / No
GET /groups/100/members returns ('Nico') / Yes
相反,Gitlab提供了另一个API:
GET /projects/1/members/all returns ('Paul', 'Marc', 'Jean', 'Nico') / Yes