其实回头看,要想实现这个简单的需求有许多办法,我们当前围绕飞书开放平台 open api 实现了完整的飞书能力的构建,通过 Jenkins Gerrit 插件可以监听到 Gerrit Code Review Added Events ,然后调用我们封装好的飞书消息推送的 API 就能实现;
由于对于飞书集成平台比较感兴趣,刚关注到它发布,借着这个需求可以完整实践一次;
回到这个需求本身,实现过程应该通过 Gerrit hooks 事件的消息推送,然后将消息推送到指定开发者;
Gerrit 有提供 Webhooks 的插件的能力,介绍文档;
通过插件可以将 Gerrit events 通过 REST API 发送到指定服务,然后实现消息提醒;
飞书集成平台提供了多服务外部集成能力;
第一步,下载 Gerrit Webhooks 插件;
第二步,上传插件,通过 api 上传
curl --user xxx:xxx -X PUT \
-H "Content-Type:application/octet-stream" \
--data-binary @{plugins}.jar 'https://xxx.xxx.xx/a/plugins/{plugins}.jar'
最后,重启 Gerrit 服务生效插件;
增加 webhook 到 指定 respository,其中 /a/ 是开启 http auth;
其中参考文档 Gerrit Webhooks 文档地址;
curl --user xxx/xxx \
https://xx.xx.com/a/config/server/{plugins}~projects/{指定仓库}/remotes/{自定义}
curl --location --request PUT 'https://xx.xx.xx/a/config/server/{plugins}~projects/{指定仓库}/remotes/{自定义}' \
--header 'Content-Type: application/json' \
--header 'Authorization: xxxx' \
--data-raw '{
"url": "https://open.feishu.cn/xxxx",
"maxTries": 3,
"sslVerity": true,
"events": ["reviewer-added"]
}'
建立飞书集成流:
外部接收到的数据,需要先将其中的 body message 执行 json 序列化,改成 json 结构体;
通过动态脚本,将需要组装的消息卡片结构体组装成 object;
最后再将 object 反序列化为 string 提供给飞书消息的组件实现消息发送;
我们看看最后呈现的效果
实现飞书消息的递送,由 Webhook 消息体转成飞书消息体全流程;
方便研发接收 Code Review 信息,及时响应;
大致了解实践了飞书集成平台里面各个组件的使用,飞书集成平台的组件文档依然非常缺失,但是仍然值得我们花时间尝试,它有可能帮助我们在企业内自动化实现效率提升;
简单回顾,飞书集成平台应该刚刚启动,相较于成熟的 Zapier,包括开源的 n8n 仍然有很长的路需要走,但是对于重度使用飞书的企业内自建应用来看,已经足够;