用「ChatOps」更加高效地完成自动化工作
发布于 1 天前 作者 realliu 156 次浏览 来自 分享

ChatOps 及其实现方式

BearyChat-ChatOps.png 现在工程师的人力成本越来越高,靠工程师手动通过 SSH 或类似的第三方工具来远程部署服务的方式,枯燥乏味,容易出错,部署时间长。仅仅为了部署服务,工程师就免不了加班,而且整个过程都要守候在工作机器旁边,片刻也不能离开。老板不愿看到员工既加班又不能保证服务质量,工程师也不期望这样重复而紧张的部署过程,希望能够找到一种快捷安全的部署服务的方式。

如果你也经历过以上描述的场景,那么也许你可以思考如何换一种工作方式,让自己既能提高技能,也能节省时间,更重要的是,让服务更加稳定可靠。即将成为趋势的 ChatOps(即一种会话驱动型开发的做法)的工作方式不失为一种好选择。

BearyChat 旨在提高团队的沟通和工作效率,为使用团队打通了各种第三方服务。在沟通的同时完成线上服务的部署,BearyChat + Hubot + Jenkins + GitHub 的工作模式可以助你们团队一臂之力。

更好的使用这一套组合,有一个基本的前提:能够通过一条命令来部署服务。Jenkins 要做的事情是执行这条命令,至于执行时需要的权限,参数等都可以在 Jenkins 中配置。如果团队的服务还没有达到一条命令完成部署的话,这个组合模式也很难更好的发挥它的作用。 可以参考 fabfile

我们可以使用到以下工具:

  • BearyChat 是一款团队内部的 IM 沟通工具,旨在为团队提供一种崭新的工作方式,打通团队内部使用的众多第三方服务,提高沟通效率。

  • Hubot 是 GitHub 开源的聊天机器人,提供了一种崭新的运维工作方式:配置,部署,报表,监控等。这些通过指令实现的交互方式,可以大大帮我们减少一些重复的劳作,提高工作效率,也使得工作方式一步步自动化,让工作者找到一种更愉悦的操作方式,当然这不能影响服务的稳定性。

  • Jenkins CI 是一个开源的可私有部署的持续集成服务,众多的第三方插件使得它能够适应大多数公司的持续集成需求,不仅能够验证代码的正确性,而且能够快速稳定的帮助我们完成部署、服务回滚等工作。

  • GitHub 是一个利用 Git 进行版本控制、专门用于存放软件代码与内容的工具, GitHub 已经成为了管理软件开发以及发现已有代码的首选方法。

GitHub 管理代码

为了团队工程师编写代码时能有一个愉快开心的体验, Git 工作流和 GitHub 的代码托管服务无论在服务稳定性还是便捷性上都肯定是首选。

对于还在使用 SVN 来托管代码的团队,这里只能说:放下屠刀,回头是岸啊。实在不行,私有部署的 GitLab 也是一个不错的选择。

部署 Hubot 机器人

Hubot 机器人需要团队部署在自己的服务器上,用来跟团队内部的其他服务通信。

  • 按照 hubot-bearychat 安装 Hubot 机器人以及 hubot-bearychat 的 adapter

  • 按照 hubot-jenkins 安装 hubot-jenkins 插件。记得在 external-scripts.json 中添加 hubot-jenkins

  • 按照上面两个文档的说明,配置 HUBOT_BEARYCHAT_TOKENS HUBOT_JENKINS_AUTH 和 HUBOT_JENKINS_URL 环境变量并启动 Hubot

安装并使用 Jenkins

  • 按照 Install Jenkins 文档安装对应系统的 Jenkins 服务。当然如果选择 docker 的话,可以参考 Jenkins Docker Image

  • 为了使得 Jenkins 能够跟 GitHub 和 BearyChat 通信,需要安装 GitHub 和 BearyChat 的插件

  • 配置插件的具体方式,可以参考 Jenkins in BearyChat

BearyChat 连接服务

  • 首先要注册使用 BearyChat 服务,创建一个团队并新建一个 Hubot 机器人,并将 Hubot 机器人加入到某个讨论组内

  • Hubot 机器人的 Token 会作为私有部署的 Hubot 机器人的启动变量

  • 剩下的就是在讨论组中跟 Hubot 通信来部署你的服务

当然为了保证安全性,我们还可以做一些自定义的验证工作,来避免团队内部他人不小心部署我们的服务,剩下的事情,就是花精力来把这套组合流程打通,造福于团队了。

ChatOps 代表着「透明」和「效率」的趋势,无疑是团队沟通和合作发展的一种主流方向。首次打通这种工作流程可能需要一定的工作量,但一旦打通并走上正轨,将会为整个团队培养出一种更加简单高效的工作文化。

回到顶部