设置通用Webhook订阅
操作场景
CodeArts支持自定义消息通知,将用户操作所产生的事件,以HTTP协议发送给第三方平台。
可配置的服务及事件类型如下表所示。
服务 |
事件类型 |
|
---|---|---|
需求管理 |
原始需求 |
|
系统特性 |
|
|
研发需求 |
|
|
任务 |
|
|
缺陷 |
|
|
评审单 |
|
|
代码检查 |
代码检查任务 |
检查完成
|
部署 |
应用 |
|
流水线 |
流水线 |
|
约束与限制
- 仅“亚太-新加坡”区域支持本功能。
- 仅IPD类项目支持本功能
前提条件
已新建CodeArts项目,在项目中的角色为“项目管理员”或“项目经理”。
新建Webhook订阅
- 进入CodeArts首页。
- 登录CodeArts控制台,单击
,根据需要选择已开通CodeArts的区域。
- 单击“前往工作台”。
如果当前账号采用的是历史计费模式(详情请参见历史计费模式说明),则单击“立即使用”。
- 登录CodeArts控制台,单击
- 单击目标项目名称,进入项目。
- 在导航中依次单击“设置 > 通用设置 > 通知设置”,进入通知设置页面。
- 选择“通用webhook”页签。
- 选择需要配置通知的服务,单击“新建Webhook订阅”。
- 根据实际需要完成参数配置,单击“确定”。
表2 新建Webhook订阅 参数
说明
订阅事件名称
通用Webhook的名称。
URL
HTTP Server的接收请求的URL地址,当前只支持使用POST方式接收。
事件类型
触发通用Webhook通知的事件类型,支持的事件类型参考表1。
HTTP请求头
通用Webhook通知的HTTP请求头。此参数为可选参数,请根据需要配置。
HTTP请求头是HTTP协议中定义的一种规范。
服务在对应的事件发生时,会调用用户配置的URL。调用URL时,有可能会需要同时携带HTTP请求头(例如用来鉴权)。
HTTP请求头的格式一般为“key: value”,例如:Content-Type: application/json。
一次请求可以发送多个请求头,当发送多个请求头时,通过换行分隔,每一行代表一个请求头。
单个请求头最大长度100,最多可输入20个请求头。
了解更多HTTP请求头相关知识,请参考HTTP官网文档。
自定义模板
通过自定义模板设置请求Body,可使用“${}”动态定义参数(例如“${eventName}”表示事件名),可支持参数请参考事件数据结构说明。
操作成功后,页面中显示新建的Webhook订阅记录。
事件数据结构说明
- 需求管理:
表3 需求管理服务动态定义参数表 动态参数
说明
${project.id}
项目ID
${project.url}
项目url
${issue.id}
工作项ID
${issue.title}
工作名称
${issue.url}
工作项url
${operator.username}
操作用户名
${operator.id}
操作人ID
${review.id}
评审单ID
${review.title}
评审单标题
${review.url}
评审单url
${operation}
事件名称
${event.id}
事件ID
${event.time}
事件时间
- 代码检查
{ "eventName": "检查完成", //事件名 "eventCode": "taskExecuteCompleted", //事件编码 "project": { "id": "", //项目 ID "url": "" // 代码检查项目地址 }, "task" : { "id": "", // 任务 ID "name": "", // 任务名称 "gitUrl": "", // 仓库地址 "creator": "" // 任务创建人 }, "job": { "id": "", // 执行 ID "startTime": "", // 任务执行开始时间 "finishTime": "", // 任务执行结束时间 "status": "", // 任务状态(成功、失败、终止) "gateResult": "", // 门禁结果(通过、不通过) "executor": "", // 执行人 "url": "" // 执行记录跳转地址 }, "issues": { "critical": "", // 致命问题数 "major": "", // 严重问题数 "minor": "", // 一般问题数 "suggestion": "" // 提示问题数 } }
- 部署
事件名
事件编码
应用部署成功
success
应用部署失败
failure
应用部署中止
stop
{ "eventName": "应用部署成功", //事件名 "eventCode": "success", //事件编码 "taskName": "", //应用名称 "projectName": "", //项目名称 "result": "", //执行结果 "sort": "", //执行序号 "startUser": "", //执行人 "startTime": "", //执行时间 "link":""//部署详情链接 }
- 流水线
流水线服务参数的调用方式为“${pipeline.参数名},例如:调用流水线ID“${pipeline.pipeline_id}”。
流水线服务提供的可调用参数如下。{ "pipeline": { "pipeline_id": "", //流水线ID "run_number": "", //流水线执行编号 "project_id": "", //流水线所属项目ID "run_id": "", //流水线执行ID "timestamp": "", //流水线执行时间戳 "trigger_type": "", //流水线触发类型 "name": "" //流水线名称 } }