使用Strider实现持续集成

前言

持续集成(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:
1
2
3
4
5

❯ 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:

1
2
3
4

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

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

1
2
3
4
5
6
7
8

❯ 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"
}

创建管理员用户:

1
2

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):

1
2
3
4
5

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

版权声明:本文由 董伟明 原创,未经作者授权禁止任何微信公众号和向掘金(juejin.im)转载,技术博客转载采用 保留署名-非商业性使用-禁止演绎 4.0-国际许可协议
python