GitLab基础:使用API获取某个项目下所有成员及权限信息
发布日期:2021-06-30 20:21:10
浏览次数:3
分类:技术文章
本文共 5183 字,大约阅读时间需要 17 分钟。
这篇文章记录一下对于一个GitLab的老版本(8.11.2)使用API获取某个项目下的所有成员权限的列表的方法。
目录
背景
因一个特殊的对应需求,无法直接使用GitLab直接提供功能进行备份,其实GitLab提供了不少有用的组合形态的API可以用于此方面处理。
API
查看了一下目前官方的最新API(v4)版本,对于groups和projects下面用户的权限信息,主要如下所示:
groups下成员查询:curl --header “PRIVATE-TOKEN: <your_access_token>” “https://gitlab.example.com/api/v4/groups/:id/members”
projects下成员查询:curl --header “PRIVATE-TOKEN: <your_access_token>” “https://gitlab.example.com/api/v4/projects/:id/members”
已知问题
在有继承关系时groups下的成员权限有时显示可能会不太正确,详细可参看如下issue:
事前准备
- 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/tcpliumiaocn: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$
总结
转载地址:https://liumiaocn.blog.csdn.net/article/details/110107023 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月22日 13时36分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux 常用命令
2021-07-03
递归及应用
2021-07-03
Android之Handler机制篇
2021-07-03
Android之网络协议篇
2021-07-03
Android之RecyclerView篇
2021-07-03
Android之Retrofit基本用法篇
2021-07-03
Netty与网络协议资料整理
2021-07-03
Golang相关资源整理
2021-07-03
设置Golang的开发环境
2021-07-03
对HTTP/2的部分理解
2021-07-03
Golang 逃逸分析
2021-07-03
golang实现大数据量文件的排序
2021-07-03
golang中的time包
2021-07-03
golang fmt包中的占位符
2021-07-03
Docker下使用Redis
2021-07-03
Redis的主从和集群设置
2021-07-03
对Redis Cluster的理解
2021-07-03
清华师哥丢了个在Github下载量50万+的项目给我,让(附源码下载地址)
2021-07-03
The MASM32 SDK version 10 发布了!
2021-07-03