## 背景 - **Webhook服务已经部署,需要通知的服务请配置:http://172.17.229.32:18081/webhook/f93a7084-65b9-4d84-bf28-ae6cdaead1b2** - **更换机器人修改后面的uuid就行** 实现 gitlab merge request 事件能够实时的通知到对应的群组,并 @相关人员 进行 code review 及代码合并 ## 说明 ### Gitlab webhook 作用 能够实现gitlab事件通知,比如说通过 webhook 触发 jenkins 自动构建,合并代码提醒等 ![](https://picture.texous.cn/baiju/webhook%20%E6%94%AF%E6%8C%81%E7%B1%BB%E5%9E%8B.png) ### Webhook 企微配置 > 由于企业微信不兼容 Gitlab 的 webhook,所有需要做一个服务进行转发, > 服务链接:[cloud-webhook-gitlab](http://git.keyfil.com/qifu-gateway/cloud-webhook-gitlab) #### Webhook 链接生成 ##### 企微群组添加机器人 ![](https://picture.texous.cn/baiju/%E4%BC%81%E5%BE%AE%E6%B7%BB%E5%8A%A0%E6%9C%BA%E5%99%A8%E4%BA%BA.png) ##### 获取 Webhook 地址. ![](https://picture.texous.cn/baiju/%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%9C%B0%E5%9D%80.png) ##### 记录 `key` 参数. - 例如 : `f93a7084-65b9-4d84-bf28-ae6cdaead1b2` ##### 生成webhook链接 - https://webhook.test.com/webhook/{key}?channel=wxwork - {key}:表示 webhook 生成的 key - {channel}(可选):表示需要发送的渠道。现在支持 wxwork。默认 wxwork - 例如 : https://webhook.test.com/webhook/f93a7084-65b9-4d84-bf28-ae6cdaead1b2 ### Gitlab 仓库配置 Webhook ##### 进入Webhook配置界面`settings / webhooks` ![](https://picture.texous.cn/baiju/%E4%BB%93%E5%BA%93%E9%85%8D%E7%BD%AEwebhook.png) - URL:填写生成的 webhook 链接。比如: https://webhook.test.com/webhook/f93a7084-65b9-4d84-bf28-ae6cdaead1b2 - Trigger:勾选需要推送的事件。 - 当前支持的事件如下: - Push events - Tag push events - Merge request events - Pipeline events - 勾选 Enable SSL verification - 点击添加 ##### 测试 Webhook ![](https://picture.texous.cn/baiju/webhook%E6%B5%8B%E8%AF%95.png) ## MR通知使用 ### 发起MR - 发起 Merge Request - ![](https://picture.texous.cn/blog/20250425093529303.png) - 选择源分支和目标分支 - ![](https://picture.texous.cn/blog/20250425093754855.png) - 填写详细信息 - ![](https://picture.texous.cn/blog/20250425101211797.png) - 由于事件中获取步到 Reviewer 所以使用 Assignee 代替 ## 附加说明 ### 企微用户无法被 @提及 #### MR 提交配置没有指定对应的负责人 创建MR时需要填写 `Assignee` 字段指定对应的人 ![](https://picture.texous.cn/blog/20241226190024762.png) #### MR消息中相关负责人没有被@提醒 ![](https://picture.texous.cn/baiju/MR%E9%80%9A%E7%9F%A5%E7%BE%A4%E9%94%99%E8%AF%AF%E6%8F%90%E7%A4%BA.png) ##### 造成上面错误的原因主要有两个: - **第一种:** Gitlab 上用户名不规范:可以通过修改用户名解决 - ![](https://picture.texous.cn/baiju/%E4%BF%AE%E6%94%B9%E7%94%A8%E6%88%B7%E5%90%8D.png) - **第二种:** 由于公司企微 `账户/userid` 生成策略的变化,导致无法直接通过 gitlab 用户名推导出 `账户/userid` - 老员工企微 `账户/userid`:刘晓华(XianChaoHong) - 新员工企微 `账户/userid`:刘晓华(d0a12021606f43f19f3e8583adf16fce) ###### 按以下步骤解决问题: - 找 `HR` 获取用户的企微账号 - 在 [cloud-webhook-gitlab](http://git.keyfil.com/qifu-gateway/cloud-webhook-gitlab) 项目配置文件中添加映射 - ![](https://picture.texous.cn/baiju/%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7%E6%98%A0%E5%B0%84.png) - 重新发布服务 - ![](https://picture.texous.cn/baiju/%E9%87%8D%E5%8F%91webhook%E9%A1%B9%E7%9B%AE.png) - 测试MR提醒 ### 消息格式 #### MR ``` [@user](/link) 提交了一个 MR 从 [source](/source) 到 [target](/targer) > 请求信息:[MR title](mrurl) > 状态:status > 仓库:[repo](repo) [@Assignee]() ```