Slack + GitHub +Jenkins (SGJ)

2014年03月17日

作为一个互联网公司,一些基础服务必不可少,比如 IM,Version Control,Continuous Integration Service 等等。最近,我闲的蛋疼,折腾了一下,把这几个服务串联到了一起,感觉很舒服。主要是以下几个功能:

  • 团队聊天服务,需要有 Channel,File Sharing 以及可以集成主流第三方服务, 比如 GitHub
  • 代码版本控制服务,Version Control,Code Review 等等(必须是 GitHub 了)。
  • 持续集成服务,可以自动编译每次 Pull Request,保证 Master 上的代码是通过测试的,可部署的。

就这样,几个服务选择:

  • IM:Slack。之前体验过 Hipchat,同样是为团队而生的产品,两者功能上大体相似,Slack 是现代美,Hipchat 是古典美,只是从目前的使用体验来讲,Hipchat 在国内被墙的很厉害,网络不太稳定。两者对于第三方集成的支持都很棒,有一些自带的基本够用了,也提供了 API 作为定制,具体可以参见 Slack的集成服务
  • Version Control:GitHub。没什么好说的,服务太好了,虽然国内偶尔被墙,但是比起 Gitlab,这个出的还是值的。
  • Continuous Integration:Jenkins。本来是选择了 Travis,试用了一段时间,非常非常专业,也特别好用,价格说实在的,也还可以,只是对于创业来讲,稍微有些顾忌,所以退而求其次,考虑了免费的 Jenkins。由于 Jenkins 需要 Host 在自己的服务器上,所以他的成本就是买一个 VPS(这个成本肯定省不了),然后就很简单了,官方教程在这里,我这以 debian 系为例:
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Slack + GitHub:

这两个结合非常方便,上图吧:

01

接下来就按照步骤走就可以了,注意,如果你想在一个 Channel 里面想收到多个分支的变化通知,就需要创建多个 GitHub 服务集成(显然是为了收费,只有 5 个免费,这样一来,如果我有 5 个分支都想 push 到 Slack 的 dev 频道,就需要用上 5 个 integration)。

GitHub + Jenkins:

这两个稍微麻烦点,当然主要还是免费的 Jenkins 拖后腿了,因为大部分工作在 Jenkins 这里:

  • 更新 Jenkins 插件源,系统管理 -> 管理插件 -> 高级 -> 立即获取(在右下角)。注意,这里也有一个坑,在控制台界面更新的时候,其实是本地网络请求了最新的 json 文件,再 post 给 Jenkins 服务器,所以经常会因为网络很慢的原因导致更新不成功,建议更新的时候用一下代理。
  • 安装 GitHub 插件。
  • 重启 Jenkins。
  • 接下来就看管方教程了。

目前我们主要是为了每次 Pull Request 的时候做 Build, 所以选择了 GitHub Pull Request Builder 插件。

安装好之后,开始配置:

  • 系统管理 -> 系统设置,添加 GitHub API 地址和你的 Access Token:

06

  • 配置 Job,指定 GitHub Repo:

02

  • 配置触发器,勾选“GitHub pull requests builder”和“Use github hooks for build triggering”:

03

  • 配置 GitHub Webhook:

04

  • 随便提一个 PR,测试一下吧~

Slack + Jenkins:

这也非常简单,只需要安装一下 Slack 的插件就可以了:

至此,SGJ 组合就搭建完成了,来一个 PR 了,我需要去 Review,有问题欢迎留言~

05

blog comments powered by Disqus