GitLab API使用小结
背景描述
需求描述:
最近因为工作上的需求,需要对GitLab进行大批量的操作,又因为服务器不在境内,所以所有的操作都需要连接VPN来进行翻墙访问。目前大概有6000多个合并请求,需要审核后处理,需要在指定项目,指定筛选条件后,获取到的清单列表,然后按照公司要求的分支策略去操作。由于公司有自己的分支策略,每个分支和受保护的分支都有大批量的Commit Diff.
经高人指点:
让我直接调用API试试。原来可以直接调用服务器的API来直接对GitLab服务器进行访问,避免页面中无效的操作,如每次打开Merge Request的时候就要比对差异等。
好处:
调用API可以完全用命令操作,减少了Web端无用的功能,大大提高了服务器的访问效率。
说明:
首先我想说的是,我这里只是根据我的使用过程简单的提一下,不要过度依赖此篇文章,因为我提到的也只是冰山一角,文中所有的案例都来自于官方API文档。(文档没有中文版本)
GitLab API文档地址:https://docs.gitlab.com/ee/api/README.html
Merge Request 操作API:https://docs.gitlab.com/ee/api/merge_requests.html
详细说明
具体使用过程
- 在GitLab中生成个人的Token。(操作的时候要使用Token来做令牌,所以生成Token的账号需要有操作此项目的权限)。
- 查看我想用的功能说明和参数说明,调用对应的API。
- 在命令行 将编写好的命令执行。
教程说明
API文档每个功能都有详细的说明。功能描述,案例说明,参数说明。
-
API功能描述和举例说明:
-
API功能对应的参数清单:
-
获取到的结果截图
案例
我这里拿一个需求来举例说明:我想要获取GitLab中A项目中,所有的指给我的任务,Title中有指定字符标记的,又或者是指定作者的。
在功能里的获取所有的合并请求叫做:list-merge-requests
用到的参数如下:
target_branch=master:目标分支为master分支的
scope=assigned_to_me:指派给自己的
search=xxx : 搜Title和Description 中的关键字的
state=opened:状态为开放的
author_id=281:指定作者ID的
汇总如下:
curl --request GET --header "PRIVATE-TOKEN: 8zQsjXXXQsiu8" http://10.X.XXX.XX/api/v4/projects/37/merge_requests?scope=assigned_to_me&search=NCSCMPT&target_branch=master&state=opened
结果就是如下所示的JSON中的一个,其中信息已经打马赛克。可以看到所有的信息。
然后,各位就根据自己的需求去研究API文档吧。
我用到的功能有:
获取指定条件的清单
删除MR请求
发起MR请求
这几个简单的日常批量操作,极大的增加了工作效率。