您当前的位置: 首页 >  git

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

GitLab基础:使用API获取某个项目下所有成员及权限信息

发布时间:2020-11-25 06:20:24 ,浏览量:0

这篇文章记录一下对于一个GitLab的老版本(8.11.2)使用API获取某个项目下的所有成员权限的列表的方法。

目录
  • 背景
  • API
  • 已知问题
  • 事前准备
  • 查询
  • 总结
背景

因一个特殊的对应需求,无法直接使用GitLab直接提供功能进行备份,其实GitLab提供了不少有用的组合形态的API可以用于此方面处理。

API

查看了一下目前官方的最新API(v4)版本,对于groups和projects下面用户的权限信息,主要如下所示:

groups下成员查询:curl --header “PRIVATE-TOKEN:” “https://gitlab.example.com/api/v4/groups/:id/members”

projects下成员查询:curl --header “PRIVATE-TOKEN:” “https://gitlab.example.com/api/v4/projects/:id/members”

已知问题

在有继承关系时groups下的成员权限有时显示可能会不太正确,详细可参看如下issue:

  • https://gitlab.com/gitlab-org/gitlab/-/issues/249523
事前准备
  • yaml文件
liumiaocn:gitlab liumiao$ cat docker-compose.yml version: '2' services: # Version Control service: Gitlab gitlab: image: gitlab/gitlab-ce:8.11.2-ce.1 ports: - "32001:80" - "30022:22" - "443:443" volumes: - /Users/liumiao/gitlab/log/:/var/log/gitlab - /Users/liumiao/gitlab/data/:/var/opt/gitlab - /Users/liumiao/gitlab/conf/:/etc/gitlab restart: "no" liumiaocn:gitlab liumiao$
  • 启动状态
liumiaocn:gitlab liumiao$ docker-compose ps
     Name             Command       State                                 Ports                               
--------------------------------------------------------------------------------------------------------------
gitlab_gitlab_1   /assets/wrapper   Up      0.0.0.0:30022->22/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:32001->80/tcp
liumiaocn:gitlab liumiao$
  • project/user准备 在这里插入图片描述 project2的详细信息如下 在这里插入图片描述
  • token准备 在此版本中仍然有private token,不过本文中使用的仍然是Access Token的方式,使用此Token也没有问题,这个版本中仍然有session api。 在这里插入图片描述
查询
  • 查询 project下的成员信息
liumiaocn:gitlab liumiao$ curl --header "PRIVATE-TOKEN: LW_PqexsjxVgVY4yJQs1" "http://localhost:32001/api/v3/projects/2/members" 2>/dev/null |jq . [ { "name": "user4", "username": "user4", "id": 5, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/7cc73669801d4e98648067643fe4b055?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/user4", "access_level": 40, "expires_at": null }, { "name": "user3", "username": "user3", "id": 4, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/8d967bc57202b6d44618dcb0753afe5d?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/user3", "access_level": 30, "expires_at": null }, { "name": "user2", "username": "user2", "id": 3, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/cc00a8c917457e6e7259900fc25ac879?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/user2", "access_level": 20, "expires_at": null }, { "name": "user1", "username": "usr1", "id": 2, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/eb7c8c7791f4f4c7cdd712635277a1f2?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/usr1", "access_level": 10, "expires_at": null } ] liumiaocn:gitlab liumiao$
  • 查询groups下的成员信息
liumiaocn:gitlab liumiao$ curl --header "PRIVATE-TOKEN: LW_PqexsjxVgVY4yJQs1" "http://localhost:32001/api/v3/groups/1/members" 2>/dev/null |jq . { "message": "404 Group Not Found" } liumiaocn:gitlab liumiao$ curl --header "PRIVATE-TOKEN: LW_PqexsjxVgVY4yJQs1" "http://localhost:32001/api/v3/groups/2/members" 2>/dev/null |jq . [ { "name": "Administrator", "username": "root", "id": 1, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/root", "access_level": 50, "expires_at": null } ] liumiaocn:gitlab liumiao$
  • 使用Private Token也没有问题
liumiaocn:gitlab liumiao$ curl --header "PRIVATE-TOKEN: F-cDq99zfnZveHk_VajZ" "http://localhost:32001/api/v3/groups/2/members" 2>/dev/null |jq . [ { "name": "Administrator", "username": "root", "id": 1, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/root", "access_level": 50, "expires_at": null } ] liumiaocn:gitlab liumiao$ 
liumiaocn:gitlab liumiao$ curl --header "PRIVATE-TOKEN: F-cDq99zfnZveHk_VajZ" "http://localhost:32001/api/v3/projects/2/members" 2>/dev/null |jq . [ { "name": "user4", "username": "user4", "id": 5, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/7cc73669801d4e98648067643fe4b055?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/user4", "access_level": 40, "expires_at": null }, { "name": "user3", "username": "user3", "id": 4, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/8d967bc57202b6d44618dcb0753afe5d?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/user3", "access_level": 30, "expires_at": null }, { "name": "user2", "username": "user2", "id": 3, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/cc00a8c917457e6e7259900fc25ac879?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/user2", "access_level": 20, "expires_at": null }, { "name": "user1", "username": "usr1", "id": 2, "state": "active", "avatar_url": "http://www.gravatar.com/avatar/eb7c8c7791f4f4c7cdd712635277a1f2?s=80&d=identicon", "web_url": "http://6438783cc6ca/u/usr1", "access_level": 10, "expires_at": null } ] liumiaocn:gitlab liumiao$
总结
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3696s