keyfil/方案/20241226-GitlabWebhook配置.md
liuxiaohua e59557c451
All checks were successful
Publish to Confluence / confluence (push) Successful in 42s
[2025-04-25] 添加MR通知使用说明
2025-04-25 10:13:12 +08:00

117 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- Space: qifu -->
<!-- Parent: 后端技术&知识&规范 -->
<!-- Parent: 技术方案 -->
<!-- Parent: 基建 -->
<!-- Parent: 00-基础组件 -->
<!-- Title: 20241226-GitlabWebhook配置 -->
<!-- Macro: :anchor\((.*)\):
Template: ac:anchor
Anchor: ${1} -->
<!-- Macro: \!\[.*\]\((.+)\)\<\!\-\- width=(.*) \-\-\>
Template: ac:image
Url: ${1}
Width: ${2} -->
<!-- Macro: \<\!\-\- :toc: \-\-\>
Template: ac:toc
Printable: 'false'
MinLevel: 2
MaxLevel: 4 -->
<!-- Include: 杂项/声明文件.md -->
<!-- :toc: -->
## 背景
- **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]()
```