GitLab基础:使用API获取某个项目下所有成员及权限信息
发布日期:2021-06-30 20:21:10
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月29日 12时08分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【工具与环境】Windows下安装Sublime Text 3
2019-04-30
【工具与环境】Excel中批量插入行
2019-04-30
【学习笔记】对vanilla的一些个人理解
2019-04-30
“学硕” VS “专硕”
2019-04-30
【NLP学习笔记】知识图谱阅读笔记及其心得
2019-04-30
【工具使用】新版CSDN-markdown编辑器使用指南
2019-04-30
《知识图谱》阅读笔记(六)
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
【NLP学习笔记】词性标注(Part-of-speech Tagging, POS)
2019-04-30
《知识图谱》阅读笔记(七)
2019-04-30
《知识图谱》阅读笔记(九)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
超越白皮书8:穿云而过的闪电网络
2019-04-30
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30
对于时间复杂度的通俗理解
2019-04-30