从所有 GitLab 项目(我拥有的)中查找(并删除)成员

cri*_*ret 6 gitlab

有没有办法搜索特定用户的所有 GitLab 组和相关项目(我拥有或管理的)(目的是删除该用户)?我知道如果他们是组本身的成员如何,但是如果组中有很多项目并且有些项目有单独添加的用户,那么逐一搜索每个项目很乏味。

Vla*_*lad 11

我在 GitLab UI 中没有找到这样的功能,所以我使用GitLab API开发了 python 脚本。

\n

这是带有我的脚本和文档源代码的存储库的链接:https://gitlab.com/CVisionLab/gitlab-tools/

\n

只需下载gitlab-delete-members.py脚本并在 bash 命令行中运行即可。使用示例:

\n
$ gitlab-delete-members.py --query johndoe123 --token Abcdefg123\n Auth at https://gitlab.com\nProject "MyGroupSpam / my-project-foo" (id=11111111) : no users to delete\nProject "MyGroupSpam / my-project-bar" (id=11111112) : delete johndoe123 (id=3333333) :  ok\nProject "NotMyGroupEggs / not-my-project-baz" (id=11111113) : delete johndoe123 (id=3333333) :  fail\n 1 members deleted in 2 repositories\n
Run Code Online (Sandbox Code Playgroud)\n

以防万一我在这里提供脚本的完整源代码:

\n
$ gitlab-delete-members.py --query johndoe123 --token Abcdefg123\n Auth at https://gitlab.com\nProject "MyGroupSpam / my-project-foo" (id=11111111) : no users to delete\nProject "MyGroupSpam / my-project-bar" (id=11111112) : delete johndoe123 (id=3333333) :  ok\nProject "NotMyGroupEggs / not-my-project-baz" (id=11111113) : delete johndoe123 (id=3333333) :  fail\n 1 members deleted in 2 repositories\n
Run Code Online (Sandbox Code Playgroud)\n

如果您想了解使用了哪些 GitLab API 函数,请参阅以下简短列表:

\n
    \n
  • gl = gitlab.Gitlab(...)\xe2\x80\x93 创建 API 对象
  • \n
  • gl.auth()- 验证
  • \n
  • projects = gl.projects.list(...)- 获取项目列表
  • \n
  • members = p.members.list(...)- 列出与查询匹配的特定项目的成员
  • \n
  • m.delete()- 从项目中删除成员
  • \n
\n


Von*_*onC 2

如果组里有很多项目,并且有些项目是单独添加用户的,那么逐个搜索项目就很繁琐。

然而,考虑到编写脚本很容易,这将是唯一的选择:

如果您是管理员,您还可以列出用户的项目

问题 7687 中请求通过 API 从项目中删除用户,并在 GitLAb 8.7 中解决

DEL /projects/#{project.id}/members/#{user.id}
Run Code Online (Sandbox Code Playgroud)