GitLab merge request 结合钉钉群消息机器人的全自动 Code Review 实践(含源码)——中

2,041 阅读3分钟

这个系列计划写3篇,本文是第2篇(上篇没有看过的同学可点击传送门

  • 上篇:笔者公司基于 GitLab 的 code review 流程分享

  • 中篇:结合 GitLab 的 webhooks、merge request 以及钉钉群 GitLab 消息机器人,实现 code review 的半自动化;

  • 下篇:笔者基于 nodeJs 开发的全自动消息通知服务(已开源):结合 GitLab 的 webhooks 和钉钉群自定义机器人,将评论,merge request 等消息及时推送到钉钉群并@对应同学继续后续流程,让整个 code review 更加丝滑;

今天,主要分享一下如何基于 GitLab 的 merge request 以及钉钉群 GitLab 消息机器人,实现 code review 的半自动化(有同学可能就好奇了,为啥不直接分享全自动的化的方案呢,这是因为了解了半自动化的方案之后,理解全自动化方案就很容易了)。

具体实现的效果就是,GitLab 上的所有操作都可以同步到钉钉群消息里,而我们重点关注 merge request 和评论的部分。

第1步:创建钉钉群 GitLab 消息机器人

1.1 点击钉钉群消息设置,如下图所示

示例钉钉版本为 Mac 版 6.3.25

1.2 点击群助手

1.3 选择添加机器人

1.4 选择 GitLab 机器人,填写一些基础信息之后一直下一步,直到提示添加成功

1.5 点击拷贝 webhook 链接

OK,到这一步之后,钉钉群 GitLab 机器人就添加好了,接下来,前往 GitLab 进行 webhook 配置即可。

第2步:配置 GitLab webhooks

GitLab 版本:8.x(社区版)

2.1 配置某个 GitLab 仓库的 Webhooks,如下图点击 设置->webhooks

2.2 将刚才拷贝的URL粘贴进去,勾选 Comments 和 Merge Request events

2.3 点击 Add webhook 完成添加,添加好的 webhook 就在最下面的列表里

OK,这一步完成之后,GitLab 和钉钉群就建立起了联系,接下来我们模拟一次 code review 的流程看看会发生什么。

第3步:模拟一次 code review 流程

3.1 点击 Merge Requests -> New Merge Request,新增一个 merge request

3.2 该 merge request 的相关信息会自动发送到钉钉群

提交 merge request 的同学人肉通知对应的同学:“xx 同学,我提交了一个 merge request, 帮忙 merge 一下哈”,效果如下图

3.3 被人肉 @ 的同学,点击群里的 merge request 链接,进入到对应的页面,如下图

点击 Changes->评论 即可对具体的代码进行 review。

3.4 对应同学执行 code review

比如对某处代码进行了评论,然后人肉通知提交 merge request 的同学,“xx 同学,你的某处代码可以再看看,我评论了,群里链接你点进去看下”,如下图所示评论消息

3.5 讨论完成之后,关闭讨论

3.6 合并代码

提交 merge request 的同学确认所有的讨论都关闭了,询问 review 的同学没有其他问题了,最后进行代码合并,如下图。

OK,这一步之后,一轮完整的基于 GitLab  merge request 的 code review 就算完成了。

眼尖的同学会发现,无论是 merge request,还是评论,还是最终的 code review 完成,都需要人肉介入去通知相关同学,这一点也不酷对不对,所以,下一篇就来分享如何通过自建服务做到自动消息通知,让 code review 更丝滑。