gitlab system hook 使用案例——与已有系统打通
前言
我们都知道,gitlab 的 webhook 功能可以很方便的与钉钉等第三方工具打通,实时提醒仓库的动态。但很少人知道有 system hook,相当于 gitlab 全局的 webhoo,一般可用于二次开发,本文我们介绍一种使用场景,将 gitlab 上的动态(包含提交、合并请求、创建分支等等)与已有系统(包含自建流水线、自研的系统)打通。
gitlab system hook 配置
1、我们进入 system hook 配置页面,https://{host}/admin/hooks;
2、配置相应的 url 及 token,并选择要触发的事件,点击确认即可,配置完成后会显示在下方;
使用场景
场景一:
因内部平台有需求、缺陷、任务等一体化管理平台,在提交代码或合并代码时,需要将对应的需求、缺陷、任务等设置为已完成状态,与 gitlab 中的 issue 功能一样。因此,使用 system hook 来在消息体重加特定的字段,然后解析出来进行关联。
场景二:
内部有自研的流水线及多个代码托管的平台,仓库有提交或 merge 时,需要触发仓库所属的流水线。因此,使用 system hook 来自定义触发流水线的流程。
使用方式
由于该场景需要保障数据的实时性,因此我们使用 kafka 来做消息的分发,提供消费者接口,配置到 system hook 上,将 gitlab 事件打到 kafka 集群中,然后由消费者根据具体的事件类型,做相应的处理,相关流程如下图所示:
更多
我们除了以上两个场景,还针对所有的 commit 事件,进行代码 diff 解析并入库,统计每次提交的代码数据,为代码数据统计采集数据,这块后续会专门讲。
版权声明: 本文为 InfoQ 作者【阿呆】的原创文章。
原文链接:【http://xie.infoq.cn/article/f68d999b37ec6d0ab387a9d28】。未经作者许可,禁止转载。
评论