使用 Web 钩子将 Gitea 消息推送到飞书机器人

Web 钩子(Webhook) 是一种基于 HTTP 的回调函数,可实现轻量级的事件驱动通信。在 Gitea 当中有一个很常见的 Webhook 应用场景便是持续集成:当你从本地推送代码到 Gitea 仓库后,CI 工具就立即知道你提交了最新的程序代码并启动测试流水线。这背后的原理本质上就是 Webhook 的调用,如果把推送代码看作一次 API 调用,那么这个 API 被调用之后就会触发一系列连锁反应,比如由 Gitea 向 Drone CI 发送构建请求、向飞书推送消息等。

Gitea 目前预制了以下几种场景的钩子,但 Web 钩子的应用范围不限于此。

  • Gitea
  • Gogs
  • Slack
  • Discord
  • 钉钉
  • Telegram
  • Microsoft Teams
  • 飞书 / Lark Suite
  • Matrix
  • 企业微信
  • Packagist

Web 钩子的工作范围

  • 个人仓库:可以在 个人仓库 - 设置 - Web 钩子 - 添加 Web 钩子 创建。这个 Web 钩子的作用范围是当前仓库。
  • 组织管理员:可以在 组织 - Web 钩子 - 添加 Web 钩子 创建。在此处添加的 Web 钩子将会应用到该组织下的所有仓库。
  • 系统管理员:可以在 管理后台 - Web 钩子 创建。这里区分了 系统 Web 钩子默认 Web 钩子
    • 系统 Web 钩子:在这里定义的 Web 钩子将作用于系统上的所有仓库。
    • 默认 Web 钩子:默认钩子会在新项目创建时拷贝到这个项目的 Web 钩子中。

创建飞书机器人

飞书的机器人 ( bot ) 是一种用于群聊的自动化的程序,可以向你自动推送消息,或与你进行简单的交互。你可以在群组中添加机器人,与团队成员实时共享消息,开展高效协作。例如,你可以利用飞书提醒机器人向团队成员发送提醒。

操作流程

1. 在群组中添加群机器人

进入群组,打开会话设置,找到群机器人,并点击添加机器人。选择添加需要的机器人加入群组,这里我们选择自定义机器人。机器人添加到群组后,群内成员即可在群组中使用该机器人的功能。

创建自定义机器人

2. 自定义机器人

自定义机器人是一类特殊的群机器人。完成开发与配置后,自定义机器人可通过 webhook 向群组中自动推送来自外部系统的消息。

填写名称并创建自定义机器人。获取到 webhook 地址后,请保管好此地址。 不要公布在 Github、博客等可公开查阅的网站上。地址泄露后可能被恶意调用发送垃圾信息。

3. 在 Gitea 上注册飞书机器人 Webhook

Webhook 可以作用在 个人仓库、组织全局、组织仓库、系统全局,这里我们以组织全局为例。

进入组织,打开设置,找到 Web 钩子,并点击添加 Web 钩子。这里选择飞书/Lark Suite

进入到添加 Web 钩子界面

  • 填写目标 URL:刚刚从飞书复制的 webhook 地址
  • 选择触发条件
    • 推送事件:每次 git push 表示一次推送事件。
    • 所有事件:组织中发生任意种类的事件都能触发钩子。可以在自定义实践中查看全部事件分类。
    • 自定义事件:目前支持包括仓库事件、工单事件、合并请求事件这三大分类和20个子项。
  • 分支过滤:默认是 *,表示任意代码分支。如要设置针对某一代码分支,比如 main 分支,填写 main 即可。多个分支使用逗号隔开。

点击添加 Web 钩子,完成创建。

效果演示

以推送消息为例,包含以下信息:

  • 分支名称
  • Git 提交记录
  • Git 提交消息

posted @ 2022-11-16 17:39  Gitea  阅读(1435)  评论(0编辑  收藏  举报