如何有效地将用户添加到 GitLab 中的所有项目(以编程方式或其他方式)

Posted

技术标签:

【中文标题】如何有效地将用户添加到 GitLab 中的所有项目(以编程方式或其他方式)【英文标题】:How to efficiently add a user to all projects in GitLab (programmatically or otherwise) 【发布时间】:2019-11-26 07:38:45 【问题描述】:

我有一个包含许多项目的 GitLab CE 服务器,我想为所有项目添加一个用户。

如果可能的话,我希望避免通过 UI(项目 -> 设置 -> 成员 -> 将用户添加到项目)来执行此操作,因为这将花费大量时间。

【问题讨论】:

【参考方案1】:

如果这是为了审核,请考虑审核员访问级别。 https://docs.gitlab.com/ee/administration/auditor_users.html

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review【参考方案2】:

您可以使用 GitLab Projects 和 Members API 来实现此目的。

首先对/projects API 执行GET 请求以获取所有项目的列表。

然后针对您要添加成员的每个项目对/projects/:id/members API 执行POST

您可以在该page 上查看POST 请求的示例

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --data "user_id=1&access_level=30" https://gitlab.example.com/api/v4/projects/:id/members

【讨论】:

【参考方案3】:

执行此操作的一种方法是将所有项目移动到一个组下。然后向组中添加新成员将授予他们对所有包含项目的访问权限。迁移所有项目可能会很繁琐,但是一旦完成,它将使成员管理变得更容易。如果您希望将来可能需要更细粒度的权限,还可以考虑创建一个嵌套的组层次结构。

有关说明,请参阅 https://docs.gitlab.com/ce/user/group。

来自链接页面的“将用户添加到组”部分:

将多个项目放在一个组中的一个好处是,您可以 让用户通过一个操作访问组中的所有项目。

通过导航到群组的信息中心,将成员添加到群组中,然后 点击成员

选择权限级别,添加新成员。您还可以设置 该用户的到期日期;这是他们将 无法再访问您的群组。

考虑一个有两个项目的小组:

群组成员页面上,您现在可以向群组添加新用户。 现在,由于此用户是该组的 Developer 成员,他们自动获得 Developer 访问该组内所有项目的权限。

提高现有用户对特定用户的访问级别 项目,再次将它们作为新成员添加到项目中 所需的权限级别。

【讨论】:

我有点困惑。如果我将一个项目添加到一个组并且组权限是开发人员,并且在该组中是一个具有组维护者权限的用户,那么我的项目的用户权限是什么? (抱歉有点复杂) 来自gitlab.analog.com/help/user/permissions,“如果用户同时在组项目和项目本身中,则使用最高权限级别。”你问的是这个吗? 我明白了。谢谢

以上是关于如何有效地将用户添加到 GitLab 中的所有项目(以编程方式或其他方式)的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将非组成员添加到 Gitlab 中的组项目中?

如何有效地将稀疏矩阵列添加到另一个稀疏矩阵中的每一列?

在 asp .NET MVC 中提交表单之前动态地将项目添加到列表中

Gitlab 页面 401

在 Django 中,如何优雅地将查询集过滤器添加到大型组或对象的所有成员?

如何有效地将节点添加到段树中以进行最小范围查询?