gitlab: получить все проекты / группы участника - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь найти неактивных членов в моем экземпляре GitLab-CE через Gitlab API (v4).

Одним из критериев "(не) активности" является то, является ли данный пользователь участником какого-либо проекта или группы.

Хотя эта информация, кажется, легко доступна через веб-интерфейс (вкладка Groups and projects на странице обзора пользователя в области администратора), я не могу найти эту информацию через API.

Единственный способ, который я в настоящее время нашел, - это перебирать все проекты (или группы) и проверять, является ли пользователь их членом.

Мне кажется, что это очень медленно (так как существует, вероятно, миллионы проектов), поэтому я ищу более прямой способ запроса системы для всех проектов, членом которых является user.

1 Ответ

0 голосов
/ 15 января 2019

Как и в документе (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
...