当前位置: 首页 > news >正文

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

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

相关文章:

  • 黑客惯用软件
  • winform命名规范
  • Spring_事务管理
  • 切入点表达式
  • 浅谈偏向锁、轻量级锁、重量级锁
  • Domino
  • Node.js design pattern : module
  • 数据结构-多项式计算器(将中缀表达式转化为后缀表达式实现)
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • Linux编译安装python2.7.5的步骤
  • C# StringHelper
  • Sass Day-01
  • 和菜鸟一起学linux总线驱动之初识smartcard操作过程
  • 日记(docker)
  • 浅谈使用Fiddler工具发送post请求(带有json数据)以及get请求(Header方式传参)(Header方式传参)...
  • golang 发送GET和POST示例
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • node 版本过低
  • Vue 2.3、2.4 知识点小结
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 通过几道题目学习二叉搜索树
  • 学习HTTP相关知识笔记
  • 函数计算新功能-----支持C#函数
  • "无招胜有招"nbsp;史上最全的互…
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $().each和$.each的区别
  • $.ajax()
  • %check_box% in rails :coditions={:has_many , :through}
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (转)http协议
  • .apk 成为历史!
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net6+aspose.words导出word并转pdf
  • .NET分布式缓存Memcached从入门到实战
  • @staticmethod和@classmethod的作用与区别
  • @WebService和@WebMethod注解的用法
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [20190113]四校联考
  • [20190401]关于semtimedop函数调用.txt
  • [CTSC2014]企鹅QQ
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [MySQL--进阶篇]存储引擎的体系结构、简介、特点、选择
  • [paper] lift,splat,shooting 论文浅析
  • [RK3566-Android11] 关于 a2dpsink -蓝牙支持接收播放/无PIN码连接
  • [SpringBoot] SpringBoot-04-读取yaml配置文件
  • [Swift]LeetCode217. 存在重复元素 | Contains Duplicate
  • [UE4]创建自定义AIController的方法(C++)
  • [UI5] ODATA V4中的CRUD