【Gitlab】记一次升级 Gitlab 后 API 失效的问题

背景

前段时间,因内部使用的 Gitlab 版本存在漏洞,需要进行升级,于是乎,将 Gitlab 从 16.6.0 升级到 16.11.3。而我们项目有个接口是用于获取 Gitlab 上的开发人员。

然后,今天,突然发现这个接口获取不到 Gitlab 上任何成员(响应空数组),也没有报错信息。

分析

  1. 首先是查看 Gitlab 是否正常,人员配置信息是否存在,排查之后发现都是正常的。

  2. 询问其他人最近是否有修改过 Gitlab 相关配置,貌似没有???

  3. 上网搜索相关信息,无果……

  4. 是否是因为升级了 Gitlab 导致的?时间恰好能对上!!!那就看下官方文档

    文档地址:分组和项目成员 API

官方文档

首先看到的是 List all members of a group or project(列出组或项目的所有成员)

API 如下:

GET /groups/:id/members
GET /projects/:id/members

我们项目用的确实是这个 API,上面也说了是所有成员,那怎么就响应了空数组呢?再细看标题下面的介绍:

Gets a list of group or project members viewable by the authenticated user. Returns only direct members and not inherited members through ancestors groups.
获取已认证的用户并有权限查看的组或项目成员列表,但只返回直接成员,不返回通过祖先组(类似 Java 的父类)继承的成员。

啥?啥意思?啥是直接成员?说好的所有成员,怎么就只返回直接成员?


在 Gitlab 中,可以创建组,组中可以创建多个子组,子组可以创建多个项目。所谓直接成员,个人理解就是直接被添加到这个组或者项目的成员

假如你创建了A组,并在A组创建了test项目,然后将小一同学添加到了A组,那么小一同学就是A组的直接成员,而test项目也有小一同学这个成员,只不过他是继承过来的,所以不属于test项目的直接成员。

那么,要如何获取到这个项目真正的所有成员呢?


根据文档往下看,看到 List all members of a group or project including inherited and invited members(列出组或项目的所有成员,包括继承成员和邀请成员),看着是有那么点像我们要的了!!!

API 如下:

GET /groups/:id/members/all
GET /projects/:id/members/all

经过一试,确实可以!!!来具体看下介绍:

Gets a list of group or project members viewable by the authenticated user, including inherited members, invited users, and permissions through ancestor groups.
获取已认证的用户并有权限查看的组或项目成员列表,包括通过祖先组继承的成员、受邀用户以及权限

If a user is a member of this group or project and also of one or more ancestor groups, only its membership with the highest access_level is returned. This represents the effective permission of the user.
如果用户是这个组或项目的成员,同时也是一个或多个祖先组的成员,那么只会返回其拥有最高 access_level (访问权限),表示该用户的有效权限。

Members from an invited group are returned if either:

  • The invited group is public.
  • The requester is also a member of the invited group.
  • The requester is a member of the shared group or project.

如果满足以下条件之一,则会返回受邀组的成员:

  • 受邀组是公开的
  • 请求者也是受邀组的成员
  • 请求者是共享组或项目的成员

看来确实得用这个 API 才能后真正获取到分组或项目中所有的成员。

查看了其它版本的文档,也有这两个接口,那也许不是因为版本差异导致的?可能是配置?静待后续……

相关推荐

  1. Gitlab升级 Gitlab API 失效问题

    2024-07-19 13:02:03       23 阅读
  2. jar冲突问题

    2024-07-19 13:02:03       59 阅读
  3. 事务失效问题排查

    2024-07-19 13:02:03       47 阅读
  4. gitlab 502故障解决过程

    2024-07-19 13:02:03       38 阅读
  5. Mysql连接失败处理过程

    2024-07-19 13:02:03       28 阅读
  6. golang交叉编译问题

    2024-07-19 13:02:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 13:02:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 13:02:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 13:02:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 13:02:03       69 阅读

热门阅读

  1. React一基础

    2024-07-19 13:02:03       20 阅读
  2. Spark SQL----CLUSTER BY子句

    2024-07-19 13:02:03       17 阅读
  3. Solana的账户模型

    2024-07-19 13:02:03       22 阅读
  4. 自然语言处理技术的发展过程

    2024-07-19 13:02:03       22 阅读
  5. pandas排名函数rank()的参数

    2024-07-19 13:02:03       19 阅读
  6. 智能结合:信息推送与供需发布机器人

    2024-07-19 13:02:03       21 阅读
  7. 2、SystemC基础语法

    2024-07-19 13:02:03       20 阅读
  8. 基于深度学习的水果识别系统

    2024-07-19 13:02:03       19 阅读
  9. C语言 条件编译

    2024-07-19 13:02:03       18 阅读
  10. 利用 PHP 解锁 1688 详情 API 接口的秘密

    2024-07-19 13:02:03       21 阅读
  11. Odoo创建一个自定义UI视图

    2024-07-19 13:02:03       23 阅读
  12. 代码随想录算法训练营第16天|二叉树part 04

    2024-07-19 13:02:03       23 阅读