0 前言
Blueprint+Dredd+Gitlab-CI这一套工具链用于完成Web API的编写、上传、测试、集成。Blueprint的概念和语法另一篇博客已经有说明了,Dredd的使用我也写了一篇博客,所以这一篇主要讲Gitlab-CI的搭建过程以及如何将三者贯通使用。
1 基本概念
Gitlab-CI
,意为GItlab Continuous Integration(持续集成),在工程的根目录加入配置文件.gitlab-ci.yml
,并配置好Gitlab-Runner
之后,可以在每次上传(push)或合并(merge)时触发pipeline
测试提交的代码是否正确。
Gitlab-Runner
,可以把它理解为一个虚拟机,用于运行.gitlab-ci.yml
中的script
。
pipeline
,可以理解成检测工序链,通过.gitlab-ci.yml
设置的多个stage
,在runner运行的时候逐个阶段的执行定义好的job
,检测通过之后才可以上传或合并。
2 搭建过程
这个过程,我参考了apiary
的官方文档,下面的步骤(2.0 – 2.6)是按照官网走的,但我实际使用没有完全按照这个步骤走,大家可以参考一下,我自己具体的实现在第三节,会详细描述。
2.0 创建repository
既然要用到Gitlab,肯定需要先创建一个repository。
2.1 获取subdomain
首先需要一个Blueprint工程,没有的话新建一个,创建好之后在Settings
的API Domain
项中即可找到subdomain,之后的配置需要用到。
2.2 生成token
通过访问 https://login.apiary.io/tokens 可以获取token值,可以将这个值保存成环境变量
export APIARY_API_KEY=""
这个值之后会在配置GItlab项目的时候用到。
2.3 将工程commit到Gitlab上
将写好的blueprint文件提交到事先创建好的repository。
2.4 配置token
在工程的主页右上角,下拉菜单可以找到Variables,将之前获得的token作为APIARY_API_KEY
变量的值写入。
2.5安装配置Gitlab-Runner
yml配置文件需要在runner中运行,所以先要安装并配置好runner。
安装过程:
curl -s https:
sudo apt-get install gitlab-ci-multi-runner
安装完成之后,就是配置了,直接使用下面的命令,可以交互式的配置相关参数
sudo gitlab-ci-multi-runner register
2.6 编写配置文件
相关的语法,官方文档写得很详细。
这个文件主要是定义了一系列的job
,job下编写一些要执行的脚本。并且还有一些需要用到的docker容器等,这一部分比较复杂,我打算单独写一篇总结。
3 综合使用
这一部分,我写了一个最简单的例子,实现了每次push都会触发CI检测,CI通过使用Dredd工具测试当前版本的API文档和具体实现是否吻合。
下面简单介绍一下整个实现过程。
3.1 建立repository
这一步比较简单,但也很重要,要使用Gitlab-CI肯定得要建一个Gitlab的代码仓库,而且后续的一些Runner配置,Pipelines的查看都需要用到。
3.2 写程序
毫无疑问,测试之前首先得有代码呀,
- 写API文档(
api.apib
)
- 实现API(
app.js
)
- 写Gitlab-CI的配置文件(
.gitlab-ci.yml
)
- 写Dredd的配置文件(
dredd.yml
,这一步可以省略)
因为还在测试功能,所以只是写了一个helloworld,发出来给大家参考一下。
api.apib
:
FORMAT: 1A
# GET /
+ Response 200 (application/json; charset=utf-8)
{"message": "Hello World!"}
app.js
:
var app = require('express')();
app.get('/', function(req, res) {
res.json({message: 'Hello World!'});
})
app.listen(3000);
.gitlab-ci.yml
:
关键:Dredd工具需要应用先运行后再检测,所以在运行app.js时,使用nohup node app.js&
指令,让其后台运行,防止阻塞后续指令的执行。
image: node:6
before_script:
- npm install
- npm install -g dredd
- nohup node app.js&
test:
script:
- dredd ./api.apib http://localhost:3000
3.3 配置Runner
这一步和2.5一样,可以参考那一步的配置,为该repository建立Runner。
curl -s https:
sudo apt-get install gitlab-ci-multi-runner
安装完成之后,就是配置了,直接使用下面的命令,可以交互式的配置相关参数
sudo gitlab-ci-multi-runner register
配置之后选择启用即可。
3.4 开始使用
将代码push到repository,Gitlab会自动启动Runner,并运行.gitlab-ci.yml
中设定好的指令。
经过大约4-5分钟的运行环境搭建,相关模块下载之后,就会开始检测,若通过,则会显示绿色的passed
,没有通过则会显示红色的failed
。