
# 配置Webhook
#### 配置Webhook概述
开发人员可在Webhook界面配置第三方系统的URL，并根据项目需求订阅代码托管仓库的分支推送(push)、Tag推送(tag push)等事件。
当订阅事件发生时，可通过Webhook向第三方系统的URL发送POST请求，用以触发第三方系统的相关操作，例如：触发自己系统（第三方系统）界面的通知弹窗；或触发自己系统（第三方系统）的构建、更新镜像、部署等操作。
#### 约束与限制
表1配置Webhook的约束与限制 
| 限制类别 | 具体限制                                                                                                                                       |
|:---|:---|
| 权限设置 | 当用户角色为"项目经理"或者"项目管理员"，可以设置项目级Webhook，请参考[配置项目级的Repo权限](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0087.html)。 |
| 功能限制 | 每个仓库最多设置20个Webhook。                                                                                                                        |
   
#### 配置Webhook设置
1. 用户进入要配置项目的代码托管页面，依次选择上方导航栏的 "设置 \> 服务集成 \> Webhook设置"。
2. 单击"添加Webhook"，参考[表2 新建Webhook字段说明]填写参数。
   
   ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002679680792.png "点击放大")
    表2新建Webhook字段说明 
   | **字段**  | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 取值样例                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|:---|
   | 名称      | 可自定义名称，最多200个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | Webhook_Test                                                                                                                                                                                                                                                                                                                                                                                |
   | 描述      | 非必填项。用于描述该Webhook，最多200个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | Test                                                                                                                                                                                                                                                                                                                                                                                        |
   | URL     | URL及其响应中均不能有敏感数据，如果一定要包含，需用户自行加解密以保证安全性。Webhook URL需第三方CI/CD系统提供。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | https://example.com                                                                                                                                                                                                                                                                                                                                                                         |
   | Token类型 | 非必填项。当用户想要用于第三方服务Webhook接口鉴权，鉴权信息放在HTTP请求的Header中，作为Key，和下一个参数"Token"结合使用，包含以下三个选项可选： - X-Repo-Token  - X-Gitlab-Token  - X-Auth-Token   除上述三种用户也可以自定义输入Token类型。 用户在配置Webhook的时候，可以选择设置用户的Token，该Token会与用户的Webhook URL关联，系统会将该Token放在请求头的"X-Repo-Token"字段发送给用户。                                                                                                                                                                                                                                  | X-Repo-Token                                                                                                                                                                                                                                                                                                                                                                                |
   | Token   | 非必填项。当用户选择"Token类型"参数后，该参数作为Value，和上一个参数"Token类型"结合使用。 用户自定义输入，最多2000个字符。用于第三方CI/CD系统鉴权，鉴权信息放在HTTP请求的Header中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | Token_Test                                                                                                                                                                                                                                                                                                                                                                                  |
   | 触发事件    | 系统可订阅以下事件： - **推送事件：** **Git端或者在线更新代码时触发。** 勾选后，则需要继续填写"分支过滤正则规则"，长度不能超过500个字符，".\*"表示匹配全部分支。如果分支名称匹配设置的正则，在Repo仓库进行代码更新，例如更新子模块中的代码、在线或本地Git客户端中推送代码均会触发该事件。   - **合并请求事件：新建或者更新合并请求代码，状态和配置时触发。** 勾选后，更新合并请求的代码、关闭合并请求、重开合并请求、更新合并请求标题或描述、更新合并人、更新工作项、删除源分支或者更新Squash合并，都会触发该事件。   - **Tag推送事件：新建或者删除Tag时触发。** 勾选后，新建保护Tag或删除保护Tag时均会触发该事件。   - **评论事件：新增检视意见和评论时触发。** 勾选后，在代码文件中添加检视意见、在提交详情文件变更下添加检视意见、在合并请求文件变更中添加检视意见、在仓库提交详情和在合并请求详情中添加评论会触发该事件。    | - 勾选"推送事件"，设置"分支过滤正则规则"为"Branch_\*"，表示所有以"Branch_"开头的分支推送都会触发该事件。  - 勾选合并请求事件。  - 勾选Tag推送事件。   |
      
   
   
 
#### 设置Repo仓库触发事件
**以对接CodeArts Pipeline流水线为例** **，**参考如下步骤：
1. 参考[新建流水线](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0001.html)，完成流水线创建。
2. 编辑流水线，选择"触发设置"，打开Webhook开关，参见[配置流水线事件触发](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0017.html#section3)完成事件触发。
   ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002552237253.png "点击放大")
   
   
3. 进入流水线所在代码仓库，选择"设置 \> 服务集成 \> Webhook设置"。
4. 查看由流水线注册的系统Webhook，系统Webhook不可编辑和删除，仅支持测试和查看执行日志。 ![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002521315528.png "点击放大")
   
   
 
 #### 相关文档
根据上述表格配置后，触发"推送事件"，如下图所示，正常返回"200"。如果代码示例的"Token"值与表格中配置的值不一致，会导致鉴权失败，返回"401"。
![](https://support.huaweicloud.com/usermanual-codeartsrepo/zh-cn_image_0000002414407197.png "点击放大")
