前言

持续集成(Continuous Integration)已经是公认的保证产品质量和开发快速迭代的开发实践了。 目前常见的CI服务器有2种:

  1. Jenkins。 Jenkins是一个用Java编写的开源的持续集成工具, 它有丰富的插件和完善的API, 但实际工作中发现它不太稳定, Python和前端工程师很难对其进行二次开发, 页面和功能也有些陈旧。
  2. Travis CI。 一个针对Github的云服务平台, 只对开源项目提供免费的CI服务。

本篇博客将给大家介绍一个新的持续集成工具Strider。 一个使用Node.js开发的、 开源的持续集成和发布服务器。 目前它已经支持Github、 Bitbucket、 Gitlab等平台, 支持Python、 Ruby、 Node.js和其他自定义的应用。 虽然它使用常见了bootstrap, 但是页面效果还是很不错的。

在使用之前, 我们先创建一个Github开发者应用, 内容如下图:

然后在Github上创建一个用来测试的项目dongweiming/tola

使用Strider集成

使用最新版的Node.js:

❯ wget https://nodejs.org/dist/v4.4.2/node-v4.4.2.tar.gz
❯ tar zxf node-v4.4.2.tar.gz
❯ cd node-v4.4.2
❯ ./configure && make && sudo make install

安装Strider:

❯ git clone https://github.com/Strider-CD/strider
❯ cd strider
❯ npm install  # 安装依赖包

Strider配置项很多, 可以在Strider目录下添加.striderrc文件:

❯ cat .striderrc
{
"db_uri": "mongodb://dongwm:dongwm@ds015720.mlab.com:15720/strider-dongwm",  # 我的VPS不够1G内存, 不能安装MongoDB, 使用 MongoLab的免费服务来测试
"smtp_host": "smtp.mailgun.org",  # Mailgun提供每天可发送300封邮件的免费服务, 我们用它来测试
"smtp_user": "postmaster@sandboxabe8d2f42ac8424fa8dd4c5ab1f1d92b.mailgun.org",
"smtp_pass": "4e0c2880f7aaf6c1b5f39bb88acabee1"
}

创建管理员用户:

DB_URI=mongodb://dongwm:dongwm@ds015720.mlab.com:15720/strider-dongwm node bin/strider addUser

启动服务, 需要上面创建的开发者应用的APP_ID和APP_SECRET(如果使用Github企业版, 需要设置PLUGIN_GITHUB_API_DOMAIN和PLUGIN_GITHUB_API_ENDPOINT):

export SERVER_NAME=http://VPS:3000
export PLUGIN_GITHUB_APP_ID=1a7bcf97d84c938bdbe8
export PLUGIN_GITHUB_APP_SECRET=316947cbe6a85e295dcd2346f272f7844aea87cd
NODE_ENV=production npm start

访问http://VPS:3000/login, 使用之前创建的管理员用户登录。 目前还没有配置项目:

Strider默认开启了Github、 Bitbucket、 Gitlab插件。 点击Github按钮来集成Github支持(也可以直接使用如下地址访问http://VPS:3000/auth/github):

点击Authorize application按钮, 输入有权限的Github账号密码。 验证后会跳回Strider的项目页面下。

找到项目tola, 点击项目右侧的Add

接下来选择项目类型, 这里选择Python, Strider会做一些初始设置。

Strider会自动给项目添加一个Webhook。 打开https://github.com/dongweiming/tola/settings/hooks可以看到:

访问插件管理页面:http://VPS:3000/admin/plugins, 我们需要安装Github Status这个插件, 点击后面的Install。

访问http://VPS:3000/dongweiming/tola/config/tab-plugins激活邮件通知和Github状态插件, 需要把Email NotifiterGitHub Status拖拽到左面。

进入http://VPS:3000/dongweiming/tola/config/plugin-emailnotifier页面勾选`Always send notification emails.`。

现在当tola项目发生Pull request、 Push等事件时就会自动触发这个集成测试了。 项目结果页面是http://VPS:3000/dongweiming/tola。 构建成功的效果如下:

构建失败的效果如下:

同时, 在Github的Pull request页面也会显示集成结果:

打开QQ邮箱就可以看到集成结果的邮件了:

Strider自带发送Slack通知的插件, 而且Strider插件非常容易定制, 可以定义更多的插件支撑业务需要。