svn + 钉钉机器人制作简单的代码跟踪系统

Webhooks

在开始今天的主题之前,让我先说说 Webhooks。

我在很早之前使用一个第三方的支付聚合平台 ping++ (https://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版本管理详解 https://www.kancloud.cn/i281151/svn/197125

注: 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 如何使用,可以参考钉钉官网说明:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.crhF8s&treeId=257&articleId=105735&docType=1

post-commit to 钉钉

本文实现最简单的监控:只要有同事提交代码,就将信息及时推送到钉钉群里,这样只要在这个群的所有同事都能实时收到推送消息了。

这时候,只要在 post-commit 文件中,将 svn 的信息利用 POST 方法请求钉钉群机器人的链接即可。

其中,HOOKS 就是上文的钉钉机器人的链接,payload 可以参考钉钉群机器人使用说明。

由于不同系统的 svn,可以对应使用不同的脚本语言来编写推送代码,本文在 Linux 环境下,所以直接用 shell 脚本语言。

最后可以试验下,看看之前我搭建的监控效果:

总结

其实,钉钉群机器人,也是一个 Webhook,通过一系列不同服务的 Webhooks 的串联,将我们需要了解的信息,最终实时传送到我们的手机里,我们能及时得到信息。

如本文的系统,同事提交代码 -> svn post-commit Webhook -> 钉钉群机器人 Webhook -> 推送到钉钉群里。

因为时间关系,抛砖引玉,如何将 Webhooks 用到极致,实时的监控和得到我们所需要的信息,这是本文所想要阐述的,希望对你有所作用。

「完」


原文发布于微信公众号 - coding01(coding01)

原文发表时间:2018-01-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

MongoDB 即将支持跨文档事务

1682
来自专栏coderhuo

虚拟内存探究,深入理解进程地址空间

想了解堆栈等虚拟内存相关知识吗? 想知道下面这张进程地址空间示意图是如何一步一步画出来的吗? 《虚拟内存探究》系列文章将通过实验的方式带你学习相关知识。

992
来自专栏前端架构与工程

前端工程化-构建

构建的核心是资源管理。简单说,构建就是把前端工程师开发的源代码进行编译、压缩、打包等一系列操作,最终产出可以直接上线或者可供后端工程师的资源。 构建可以划分为纯...

2606
来自专栏服务端技术杂谈

微服务系列-架构

模块即服务; 微服务使用库,库定义成内存里面的调用,微服务定义成web请求或远程调用; 独立可部署; 接口调用; 缺点是远程调用比本地重很多; 按业务逻辑进行分...

3087
来自专栏java思维导图

架构师眼中的高并发架构

高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。

4962
来自专栏idba

有赞MySQL自动化运维系统--ZanDB

有赞作为"新零售"的软件服务供应商,随着业务的不断发展,从第一批几十家商户到现在300万商家,涉及零售,美业,餐饮,自媒体等众多商家,业务规模以及访问量爆发式...

3452
来自专栏程序猿DD

都在说微服务,那么微服务的反模式和陷阱是什么(一)

译者:程超 译文:http://www.jianshu.com/p/3986239138fe 一、数据驱动的迁移反模式 微服务会创建大量小的、分布式的、单一用途...

2029
来自专栏网商云

腾讯云cvm--linux结合腾讯云企业邮箱配置mailx

新账号关联我们公司购买腾讯云产品,有优惠哦!联系电话:13430587834(微信同号)

4064
来自专栏IT技术精选文摘

架构师眼中的高并发架构

2385
来自专栏Java技术分享

Redis 在 SNS 类应用中的最佳实践有哪些?

2. 热点数据的实时缓存(比如feed,数据库、缓存同时写)

2209

扫码关注云+社区