如何有效地将用户添加到 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 中的所有项目(以编程方式或其他方式)的主要内容,如果未能解决你的问题,请参考以下文章
在 asp .NET MVC 中提交表单之前动态地将项目添加到列表中