什么是工作流自动化?

  1. 工作流自动化根据业务规则设计和执行一系列重复的业务任务,以减少人际交互,提高生产力。工作流是为实现业务目标而必须完成的一系列任务;
  2. 举个例子,如果你是 MacOS 用户,也许用过 “自动操作 Automator” 的应用,它是 Mac 系统自带的任务流自动化工具,只需要拖拽鼠标等操作就能将一系列动作组合成一个工作流程,从而帮助你自动完成一些重复任务,比如,定时打开聊天框发送邮件消息到指定用户等;
  3. 市面上有比较成熟的付费工作流自动化平台 Zapier / tray.io,也有开源的替代工具 n8n,今天介绍的是飞书集成平台,它的口号是让企业的业务系统集成更标准、更安全、更简单,解决企业内部应用互联、业务自动化等问题,让信息的传递更高效,让企业内的信息充分互通。
  4. 简单的说,都是通过集成能力让一系列的人工重复操作,交由机器完成,实现降本提效;

通过 Gerrit Webhooks 关联飞书消息推送

原始诉求

  1. 研发期望 Gerrit Code Review 加人的时候,可以有飞书提醒;
  2. 其实现在是有提醒的,只是配置在 Gerrit 服务系统配置里面,配置的是邮件提醒,公司当前是重度飞书使用,邮箱基本已经闲置,研发有诉求,就开始干;

方案整理

其实回头看,要想实现这个简单的需求有许多办法,我们当前围绕飞书开放平台 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 服务生效插件;

开启 webhooks 通知

增加 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"]
}'

飞书集成平台实现消息转发

  1. 飞书集成平台是为了企业的业务系统集成更标准、更安全、更简单,解决企业内部应用互联、业务自动化等问题,让信息的传递更高效,让企业内的信息充分互通;
  2. 建立飞书集成流:

  3. 外部接收到的数据,需要先将其中的 body message 执行 json 序列化,改成 json 结构体;

  4. 通过动态脚本,将需要组装的消息卡片结构体组装成 object;

  5. 最后再将 object 反序列化为 string 提供给飞书消息的组件实现消息发送;

实现消息推送

我们看看最后呈现的效果

收益回顾

  1. 实现飞书消息的递送,由 Webhook 消息体转成飞书消息体全流程;

  2. 方便研发接收 Code Review 信息,及时响应;

  3. 大致了解实践了飞书集成平台里面各个组件的使用,飞书集成平台的组件文档依然非常缺失,但是仍然值得我们花时间尝试,它有可能帮助我们在企业内自动化实现效率提升;

  4. 简单回顾,飞书集成平台应该刚刚启动,相较于成熟的 Zapier,包括开源的 n8n 仍然有很长的路需要走,但是对于重度使用飞书的企业内自建应用来看,已经足够;


↙↙↙阅读原文可查看相关链接,并与作者交流