Node+GitLab实现小程序CI系统 (3)

Node+GitLab实现小程序CI系统

 

get请求封装

Node+GitLab实现小程序CI系统

 

 

3. 实现拉取git项目到本地的接口

这个接口的实现主要是通过Node接收项目地址然后执行git clone的shell命令实现, 需要用到Node的child_process子进程模块用来执行shell脚本。

 

代码实现

Node+GitLab实现小程序CI系统

 

4. 实现获取gitlab项目信息,分支及tag的接口

Gitlab有一个非常强大的API系统,几乎所有的功能都有相应的API接口,为了使用API,需要从Gitlab中获取私有token。

登陆你的Gitlab

点击登陆的帐户,点击settings

点击Access Tokens

Node+GitLab实现小程序CI系统

根据自己的需要创建适合需要的Tokens

Node+GitLab实现小程序CI系统

 

成功拿到token之后只需在请求的时候作为query参数传递即可: 
项目分支信息API api/v3/projects/ [projectId] /repository/branches
小程序项目tagaAPI api/v3/projects/ [projectId] /repository/tags

 

Node+GitLab实现小程序CI系统

 

 

5.实现切换分支及tag接口

分支和tag接口实现的思路是一样的,接到前端请求后执行各种git命令完成

切换至项目目录下 cd ./project

git branch 拿到本地分支信息

切换分支时通过接收的分支名称比对本地是否存在分支,如分支已存在就删除再切换,不存在就直接切换

通过log4js输出日志,为了页面展示用

 

代码实现

示例为分支切换的相关代码,tag实现的思路是一样的,只不过要把相关git命令替换即可。

Node+GitLab实现小程序CI系统

Node+GitLab实现小程序CI系统

 

 

6. 实现项目编译打包的接口

这里需要注意一下,这个接口的实现是非常灵活的,需要根据你当前项目的编译文件进行配置,比如我的项目开发时使用gulp打包编译环境到dist,其编译命令分别为:

gulp build:Dev(联调环境)

gulp build:Test(测试环境)

gulp build:Slave(预发布环境)

gulp build:Prod(线上环境)

那么同理,配置好dist输出文件目录,收到请求后执行事先实现好的shell命令即可完成打包这一步,如果你不太了解环境编译打包这块内容,可以参考我上一篇文章"《武装你的小程序——开发流程指南》";

 

代码实现

Node+GitLab实现小程序CI系统

Node+GitLab实现小程序CI系统

 

目前为止我们已经实现了六个后端功能,并生成了对应路由,分别为:

/open 实现拉起开发者工具的接口;

/up 上传小程序后台接口;

/clone 拉取git项目到本地的接口;

/checkoutBranch || /checkoutTag 获取gitlab项目信息,分支及tag的接口;

/branches || /tags 获取gitlab项目信息,分支及tag的接口;

/branches 项目编译打包的接口;

  前端实现

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdgxw.html