前言

持续集成(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 插件非常容易定制, 可以定义更多的插件支撑业务需要。