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 期待您继续关注

qrcode