基于GitLab API实现自动化任务
背景
之前在团队里基于git、maven、nexus、jenkins搭建适合中小型技术团队的CI平台,这套系统运行近一年,整体来说还是比较稳定可靠,使用起来也比较方便,基本解决了中小规模团队的CI需求。
但有个功能一直未完善,使用起来略有不便,就是自动打tag,因我们的build和部署是采用了两套jenkins去实现,而在部署环节的jenkins,是不需要和git交互的,因此也不方便使用类似:git tag
这样的命令去完成自动打tag的功能。
因此首先想到的解决方案便是在部署机上通过插件或CURL等方式去调用gitlab的一个api,这样应该能够解决这个问题。
实现
研究了下gitlab的官方文档,发现确实有提供相关API来进行tag的创建,除此之外,还提供了很多其他API,足够你实现很多方便的功能。
授权
调用api都需要使用一个gitlab账号的private token,每个git账号都有不同的private token,查看方法: 登录gitlab,进入Profile Setting — Account,可以看到如下界面:
这个token可以通过header或者query string方式加到调用请求里。
调用API
以创建tag为例,其api形式如下:
其中参数id可以通过另一接口获取:
传入必须的参数后,gitlab会返回类似于如下的消息,则说明创建tag成功:
部署成功后调用api
直接基于jenkins提供的后置脚本功能即可,首先增加全局环境变量配置:GIT_API_TOKEN,其余参数可以为每个project进行配置。
shell代码如下:
完成以上配置,在每次部署成功后都会调用gitlab的api自动创建tag。