Blueprint+Dredd+Gitlab-CI 实现持续集成

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工程,没有的话新建一个,创建好之后在SettingsAPI Domain项中即可找到subdomain,之后的配置需要用到。


2.2 生成token

通过访问 https://login.apiary.io/tokens 可以获取token值,可以将这个值保存成环境变量

export APIARY_API_KEY="<token>"

这个值之后会在配置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://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash

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://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash

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

效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值