Bearychat介绍
官方介绍:倍洽是我们在 2015 年推出的团队内部沟通工具倍洽不仅提供了更适合工作场景 的团队内部 IM,在此之上通过丰富的第三方集服务集成、自由定制的开放接口等方式将重要 的信息快速汇集,再通过信息整理、全局搜索等方式来帮助团队重新梳理信息流。
通俗的说,就是国内版的slack。不但有微信的聊天功能,而且集成很多第三方的工具, 如SCM方面有著名的Github、Gitlab、Gogs等,集成部署类有Jenkins、Travis、CircleCi等。 还有一些其它功能的集成服务。在团队协作中,这种类slack团队IM工具, 使用上手了,可以极大的 提供团队的开发交通效率。
不说了,感觉我就是来打广告的。下面介绍下除了bearychat之外,还有哪些工具可以作为 jenkins 通知的方式吧。
Jenkins 通知插件
- Email Extension
- Slack Notification
- HipChat
- Telegram Bot
- Skyper
- Bearychat
其它插件及具体说明可以访问
jenkins plugin market查看, email 的方式有点传统,不过也是最简单的。因为每个公司基本有内部的邮箱系统,员工 都有自己的邮箱,而且设置的话,也相对小白。
但是如果使用slack,或者bearychat这种现代化IM工具的话,更为方便实时,就像我们平常 使用Wechat、QQ聊天一样。而且不止Jenkins 可以用得到,也可以绑定github,jira等工具。 将消息都集中到一个工具上,而不是这个服务用一套通知,那个服务用另外一个通知,能 合在一起尽量不要分开。因为这又不是分布式。😄
Bearychat 与jenkins集成配置
首先呢,我们先要在Jenkins web ui里进行安装插件工作,Manage system -> Manage plugins, 在可选插件里,即可找到bearychat,然后点击
直接安装
,稍等片刻即可安装完成。
然后,去 Configure System里,在全局配置里找到BearyChat通知,在本文发表时,只需要 配置3个值。
-
Bearychat 添加机器人时会有一个webhook urlwebhook URL:
-
Bearychat 内部讨论组,用于接收消息的用户群体讨论组:
-
当前jenkins服务器的访问域名构建服务器URL:
定制Bearychat 消息格式
由于在Jenkins里面,我们的项目大多使用的是Jenkins multibranch pipeline,所以,这里通过在jenkinsfile 里定义好的流程,根据结果判断,添加相应通知即可,以下列表内容是custom bearychat notify 的消息格式:
// BearychatSend notify
void bearychat_notify_start() {
bearychatSend color: "#00FFFF", attachmentText: "Started Pipeline [${env.JOB_NAME} #${env.BUILD_NUMBER}](${env.BUILD_URL})"
}
// build image success or failed notify
void bearychat_notify_successful() {
bearychatSend title: "构建成功: ${env.JOB_NAME} ${env.BUILD_NUMBER}", url: "${env.BUILD_URL}"
bearychatSend message: " Job ${env.JOB_NAME} 已经执行完成", color: "#00ff00", attachmentText: "Project: ${env.JOB_BASE_NAME}, 状态: 镜像构建成功, 镜像名字: ${env.IMAGE_NAME}"
}
void bearychat_notify_failed() {
bearychatSend message: "构建失败: [${env.JOB_NAME} 执行中断, 请点击这里检查原因!](${env.BUILD_URL})", color: "#ff0000", attachmentText: "状态: 镜像构建失败"
}
// deploy namespace notify (default namespace: staging)
void bearychat_notify_deploy_successful(namespace='staging') {
bearychatSend title: "Successful Deploy to ${namespace}, Click here to check!", url: "${env.KUBERNETES_UI}=${namespace}"
}
在相应需要消息通知的stage中,添加对应的notify 函数即可。另外也可以在优化下,在函 数里进行判断,这样可以减少定义函数的数量。
验证
附上一张消息通知的截图.