准备环境
首先是外网连接权限,这个是大前提,如果你使用的是公司的网络,大概率就没这个问题,毕竟,使用公司网络是合法的,🐶
官方的插件都是在网站https://gerrit-ci.gerritforge.com/上面编译发布的,如果想知道编译的环境,直接从官网上查看日志就可以了

比如上图,看出来需要jdk21 和 bazel 7.2.1,那么就去安装这个环境
1 | |
安装bazel的方式在官网上https://bazel.build/install/ubuntu?hl=zh-cn
1 | |
下载gerrit代码
1 | |
下载需要编译的插件的代码
这里用官方的checks插件为例,进行编译
1 | |
开始编译
1 | |
我在wsl里面进行编译的,这里报错缺少zip工具,那么我就安装一个zip工具继续编译

终成正果,阿弥陀佛 ✔

checks插件
checks插件是官方提供的前后端都一起剩下的插件,理解了这个插件,就基本掌握了gerrit的插件开发
首先看一下官方画的大饼
https://gerrit-review.googlesource.com/Documentation/pg-plugin-checks-api.html

这里的功能包括
- 和标签比如Code-Style联动,检查项失败标签自动-1
- 展示失败详情和链接,这个链接可以是自定义的具体CI上的检查详情
- 红色表示失败,黄色表示告警,绿色表示成功,灰色表示等待或运行,蓝色表示有信息,展示各个检查项的状态
- 可以点击重试
- 可以给各类检查结果贴上标签
- 可以展示大文本,用于描述检查项更具体的信息
但是,上面的这么多功能,目前的checks插件里面没有使用起来,官方只是在上面这个截图上演示一下而已,实际的代码中,很多功能都没被用上
从fetcher.ts谈起
为什么从这个文件谈起呢,应为就是这个文件控制着checks面板的页面显示样式
看代码,如下,导入了@gerritcodereview里面的各类包
1 | |
这些包的具体位置,是在编译后的plugins/node_modules/目录里面,