Webhooks
在开始今天的主题之前,让我先说说 Webhooks。
我在很早之前使用一个第三方的支付聚合平台 ping++ (www.pingxx.com)
在用户支付完结后,通过「Webhooks」将支付结果推送到我们自己的服务器,然后我们就可以继续做后续的订单完结等操作。
这里的「Webhooks」,它能在「某个结点」把我们所关心的「某些数据」推送给我们所定义的接收链接上,继续后续操作。
又比如在 github 上,有人对你发了一个 issue,然后系统自动触发这个 webhooks,将 issue 信息推送出来,你只要定义好接收的接口即可。
在很多地方「Webhooks」已经成为需要或者有可能需要为后续提供定制化操作的「枢纽」,一直是我所钟爱的一个概念。
基于 svn + 钉钉的代码监控系统
收回我们今天想要做的一件事:如何利用 svn 的 Webhooks,加上钉钉群机器人,来构建我们的代码监控系统。
相信大家已经知道我怎么做了,直接进入主题。
svn Webhooks
在现实开发中,很多企业或者公司,基本都会使用 github,国内的码云、coding.io 等代码托管平台,或者利用 GitLab来搭建基于 Git 的代码版本控制。但还是有很多使用 svn 来做版本控制。
在 svn 中,也有多个 Webhooks:
目前 svn 提供 5 个 hooks,其中重点说说下面三个:
hook | 含义 | 参数 |
---|---|---|
start-commit | 它在提交事务产生前已运行,通常用来判定一个用户是否有权提交 | 版本库的路径,和要进行提交的用户名 |
pre-commit | 在事务完成提交之前运行,通常这个 hook 是用来提交的信息是否不符合要求而不允许提交 | 版本库的路径和正在提交的事务名称 |
post-commit | 它在事务完成后运行,创建一个新的修订版本 | 大多用这个 hook 来发送关于提交的描述性电子邮件,或者作为版本库的备份,本文主要利用这个 hook 推送信息到钉钉群,做为监控的源头 |
具体可以参考网站的详细说明:SVN版本管理详解 www.kancloud.cn/i281151/svn…
注: svnlook 命令是个好工具,可以用于查看很多 svn 版本信息,推荐看看
钉钉群机器人
有了 svn hooks,那么我们就需要一个接收 hooks 传过来数据的「接口」,作为监控,我们第一个关心的是:只要有同事提交代码了,我们能实时接收到消息。
市面上有很多这种接收信息的工具,如 零信、Slack、BearyChat、微信模板消息、企业微信、钉钉群机器人等等;只要能把消息实时送达到我们的手机上即可。
本文重点推荐使用「钉钉群?」,主要因为简单,而且不需要任何「成本」,如零信等有信息条数的限制和 money;模板消息、企业微信都需要所谓的 access token,需要借助服务器开发。
但钉钉机器人呢,完全可以不借助任何东西就可以做到「无缝」对接 svn 的 hooks。
下面让我们来看看怎么如何创建群机器人的吧:
1. 创建一个只有自己的「内部群聊天」:
2. 创建机器人
3. 选择「自定义」
4. 选择添加后,随便给机器人起个名字
这之后,记得复制出来该机器人的 Webhook 链接,如:
https://oapi.dingtalk.com/robot/send?access_token=0ca87986b61166d06a9a588c0f7ba648639208bd1f02971655fc5927b0620***
复制代码
5. 创建成功后,机器人会发一条消息出来:
好了,有了这个链接,我们就可以结合 svn 的 post-commit 来接收提交的基本信息了。
注: 至于钉钉群机器人 Webhook 如何使用,可以参考钉钉官网说明:open-doc.dingtalk.com/docs/doc.ht…
post-commit to 钉钉
本文实现最简单的监控:只要有同事提交代码,就将信息及时推送到钉钉群里,这样只要在这个群的所有同事都能实时收到推送消息了。
这时候,只要在 post-commit 文件中,将 svn 的信息利用 POST 方法请求钉钉群机器人的链接即可。
其中,HOOKS 就是上文的钉钉机器人的链接,payload 可以参考钉钉群机器人使用说明。
由于不同系统的 svn,可以对应使用不同的脚本语言来编写推送代码,本文在 Linux 环境下,所以直接用 shell 脚本语言。
最后可以试验下,看看之前我搭建的监控效果:
总结
其实,钉钉群机器人,也是一个 Webhook,通过一系列不同服务的 Webhooks 的串联,将我们需要了解的信息,最终实时传送到我们的手机里,我们能及时得到信息。
如本文的系统,同事提交代码 -> svn post-commit Webhook -> 钉钉群机器人 Webhook -> 推送到钉钉群里。
因为时间关系,抛砖引玉,如何将 Webhooks 用到极致,实时的监控和得到我们所需要的信息,这是本文所想要阐述的,希望对你有所作用。
「完」
coding01 期待您继续关注