gitlab提供了强大的API,几乎所有的在页面上进行的操作它都能通过API来实现。在这篇文章里,我们将会了解到gitlab的API能做什么以及怎么做,同样也会使用一个简单的例子来演示如何使用API来对用户进行管理。
Private Token
为了使用API,我们需要用到gitlab中对应account的private token。而private token的获取和重设则可通过profile settings -> account页面进行,如下图所示:
token是用户名/密码的替代,在gitlab中拥有某个帐户的token就会被认为此用户,类似你的信用卡卡密码的作用,保证token的安全性非常之重要。
API状态码和请求类型
使用gitlab的API,其返回结果可能是不同的状态编码。而Gitlab使用的状态编码基本与HTTP标准status code一致,详细信息如下:
gitlab的API的请求类型为如下所示:
用户查询
使用gitlab的API进行用户的查询,需要使用形如:api/API版本/API命令?secret_token=TOKEN的格式。至于查询用户信息,在本例中相关信息为:
项目 | 说明 |
---|---|
API版本 | v3 |
API命令 | users |
TOKEN | 在前面已经确认,为AvLwU-bxXscdwaVfzkpo |
执行之后,页面返回了gitlab中的用户的信息
更加详细的user相关的API使用,可参看:https://docs.gitlab.com/ce/api/users.html
API整体功能
我们举了一个例子,用来说明可以使用gitlab的API获取用户列表信息,这只是庞大的功能中非常小的一个,以下列出gitlab中API大体能够做到的事情。
用户管理
项番 | 说明 |
---|---|
No.1 | 显示用户列表信息 |
No.2 | 对某一用户进行增删改查 |
No.3 | 列出某一个给定用户的SSH keys |
No.4 | 对某一用户的SSH Key进行增改查 |
Session管理
项番 | 说明 |
---|---|
No.1 | 使用email和密码取得私有Token |
项目管理
项番 | 说明 |
---|---|
No.1 | 列出所有项目 |
No.2 | 对某一项目进行增删查 |
No.3 | 获取项目事件 |
No.4 | 获取某一项目的所有成员列表 |
No.5 | 对某一成员进行增删改查 |
No.6 | 对项目的webhooks进行增删改查 |
No.7 | 获取所有分支信息 |
No.8 | 获取某一个分支信息 |
No.9 | 对分支进行保护操作或者取消保护操作 |
Project snippets
项番 | 说明 |
---|---|
No.1 | 对project snippets进行增删改查 |
仓库管理
项番 | 说明 |
---|---|
No.1 | 列出所有的tag |
No.2 | 创建一个新的tag |
No.3 | 创建一个raw类型的文件或者blob类型 |
No.4 | 比较分支/tag或者提交信息 |
No.5 | 列出所有的contributors |
提交管理
项番 | 说明 |
---|---|
No.1 | 列出某一仓库的所有提交信息 |
No.2 | 获得某一提交的详细信息 |
No.3 | 获得某次提交的差分信息 |
分支管理
项番 | 说明 |
---|---|
No.1 | 对分支进行增删查以及保护或者取消保护的操作 |
Merge requests
项番 | 说明 |
---|---|
No.1 | 列出所有的merge request信息 |
No.4 | 对merge request进行增改查以及accept和close的操作 |
No.5 | 获取某一merge request的所有comment |
Issue管理
项番 | 说明 |
---|---|
No.1 | 对issue进行增删改查 |
Group管理
项番 | 说明 |
---|---|
No.1 | 对group进行增改查 |
No.2 | 转移某个project到某一group |
No.3 | 列出所有group的成员信息 |
No.4 | 添加或者删除group成员 |
总结
gitlab的API整体来说还是很强大的,尤其是根nexus3相比。但是token的管理确实在实际项目中需要多多留心和注意,安全生产,警钟长鸣。
参考
https://docs.gitlab.com/ce/api/users.html
https://docs.gitlab.com/ce/api/projects.html
https://docs.gitlab.com/ce/api/