如今工程师的人力成本愈来愈高,靠工程师手动经过 SSH 或相似的第三方工具来远程部署服务的方式,枯燥乏味,容易出错,部署时间长。仅仅为了部署服务,工程师就免不了加班,并且整个过程都要守候在工做机器旁边,片刻也不能离开。老板不肯看到员工既加班又不能保证服务质量,工程师也不指望这样重复而紧张的部署过程,但愿可以找到一种快捷安全的部署服务的方式。git
若是你也经历过以上描述的场景,那么也许你能够思考如何换一种工做方式,让本身既能提升技能,也能节省时间,更重要的是,让服务更加稳定可靠。即将成为趋势的 ChatOps(即一种会话驱动型开发的作法)的工做方式不失为一种好选择。github
BearyChat 旨在提升团队的沟通和工做效率,为使用团队打通了各类第三方服务。在沟通的同时完成线上服务的部署,BearyChat + Hubot + Jenkins + GitHub 的工做模式能够助大家团队一臂之力。 docker
更好的使用这一套组合,有一个基本的前提:可以经过一条命令来部署服务。Jenkins 要作的事情是执行这条命令,至于执行时须要的权限,参数等均可以在 Jenkins 中配置。若是团队的服务尚未达到一条命令完成部署的话,这个组合模式也很难更好的发挥它的做用。 能够参考 fabfile npm
咱们可使用到如下工具:json
BearyChat 是一款团队内部的 IM 沟通工具,旨在为团队提供一种崭新的工做方式,打通团队内部使用的众多第三方服务,提升沟通效率。安全
Hubot 是 GitHub 开源的聊天机器人,提供了一种崭新的运维工做方式:配置,部署,报表,监控等。这些经过指令实现的交互方式,能够大大帮咱们减小一些重复的劳做,提升工做效率,也使得工做方式一步步自动化,让工做者找到一种更愉悦的操做方式,固然这不能影响服务的稳定性。服务器
Jenkins CI 是一个开源的可私有部署的持续集成服务,众多的第三方插件使得它可以适应大多数公司的持续集成需求,不只可以验证代码的正确性,并且可以快速稳定的帮助咱们完成部署、服务回滚等工做。运维
GitHub 是一个利用 Git 进行版本控制、专门用于存放软件代码与内容的工具, GitHub 已经成为了管理软件开发以及发现已有代码的首选方法。工具
为了团队工程师编写代码时能有一个愉快开心的体验, Git 工做流和 GitHub 的代码托管服务不管在服务稳定性仍是便捷性上都确定是首选。spa
对于还在使用 SVN 来托管代码的团队,这里只能说:放下屠刀,悬崖勒马啊。实在不行,私有部署的 GitLab 也是一个不错的选择。
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
按照 Install Jenkins 文档安装对应系统的 Jenkins 服务。固然若是选择 docker 的话,能够参考 Jenkins Docker Image
为了使得 Jenkins 可以跟 GitHub 和 BearyChat 通讯,须要安装 GitHub 和 BearyChat 的插件
配置插件的具体方式,能够参考 Jenkins in BearyChat
首先要注册使用 BearyChat 服务,建立一个团队并新建一个 Hubot 机器人,并将 Hubot 机器人加入到某个讨论组内
Hubot 机器人的 Token 会做为私有部署的 Hubot 机器人的启动变量
剩下的就是在讨论组中跟 Hubot 通讯来部署你的服务
固然为了保证安全性,咱们还能够作一些自定义的验证工做,来避免团队内部他人不当心部署咱们的服务,剩下的事情,就是花精力来把这套组合流程打通,造福于团队了。
ChatOps 表明着「透明」和「效率」的趋势,无疑是团队沟通和合做发展的一种主流方向。首次打通这种工做流程可能须要必定的工做量,但一旦打通并走上正轨,将会为整个团队培养出一种更加简单高效的工做文化。