gitlab:获取成员的所有项目/组

时间:2018-09-02 21:00:11

标签: gitlab-api

我正在尝试通过Gitlab API(v4)在我的GitLab-CE实例中查找不活动的成员。

“(参与)活动”的标准之一是给定用户是任何项目还是组的成员。

虽然似乎可以通过Web界面(管理员区域用户概述页面上的Groups and projects标签)轻松获得此信息,但我无法通过API找到该信息。

我目前发现的唯一方法是,遍历所有项目(组),并检查用户是否是其中的成员。

这让我感到非常缓慢(因为可能有成千上万的项目),所以我正在寻找一种更直接的方法来查询系统中user所属的所有项目。

1 个答案:

答案 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