更新时间:2023-07-25 GMT+08:00
Webhook设置
Webhook简介
开发人员可在 Webhook 界面配置第三方系统的 URL,并根据项目需求订阅代码托管仓库的分支推送(push)、标签推送(tag push)等事件。当订阅事件发生时,可通过Webhook向第三方系统的URL发送 POST请求,用以触发自己系统(第三方系统)的相关操作,例如:触发自己系统(第三方系统)界面的通知弹窗;或触发自己系统(第三方系统)的构建、更新镜像、部署等操作。
若您需要用发送邮件作为仓库变化的通知方式,可通过配置“基础设置”中的“通知设置”实现。
如何在代码托管服务中设置Webhook
Webhook设置位于仓库详情中的
。此设置只针对被设置的仓库生效。
只有仓库管理员和仓库所有者能看到这个页面且有设置权限。
- 每个仓库最多只能设置20个Webhook。
- 您在配置 Webhook 的时候,还可以选择设置您的 Token,该 Token 会与您的 Webhook URL 关联,服务会将该 Token 放在请求头的 X-Codehub-Token 字段发送给您。
代码托管服务的Webhook都有哪些事件(Events)?
- 当您配置了 Webhook,您可以选择订阅哪些仓库事件,只有当订阅了的仓库事件发生了,代码托管 才会给您发送请求,也可以通过 Webhook 设置页面随时更改您订阅的事件。
- 代码托管提供了以下事件供您订阅:
- 推送事件
- 标签推送事件
- 合并请求事件
- 评论事件
- 举个例子:当您的 Webhook 订阅了合并请求事件,那么当该仓库每新建,关闭,重开任意一个合并请求时,代码托管 都会给您配置的 Webhook URL 发送一个 POST 请求告知您该事件的发生,这样您可以在有新的合并请求变更的时候处理您的一些事务。
POST请求信息
代码托管给你发送的 POST 请求将包含如下信息:headers: Content-Length: 2294 Connection: keep-alive Host: your.host.com X-Devcloud-Event: Push Hook Content-Type: application/json X-Devcloud-Token: xxxxxxx (如果配置了的话) body:(推送的具体信息) { "object_kind": "push", "event_name": "push", //事件类型,此例中为推送事件 "before": "0101010101010101010101010101010101010101", //before、after分别记录了此次动作前后的commitID "after": "0123456789012345678901234567890123456789", "ref": "refs/heads/master", //触发的分支 "checkout_sha": "0123456789012345678901234567890123456789", //触发事件时被检出的版本 "message": "", "user_id": 1234, //以下为操作者的信息 "user_name": "example_user", "user_username": "example_user", "user_email": "example@huawei.com", "user_avatar": null, "project_id": 123456, //以下为触发事件的项目的信息 "project": { "id": 123456, "name": "ExampleRepository", "description": "This is an example repository", "web_url": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository", "avatar_url": null, "git_ssh_url": "git@codehub.devcloud.huaweicloud.com:ExampleNamespace/ExampleRepository.git", "git_http_url": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository.git", "namespace": "ExampleNamespace", "visibility_level": 0, "path_with_namespace": "ExampleNamespace/ExampleRepository", "default_branch": "master", "ci_config_path": null, "homepage": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository", "url": "git@codehub.devcloud.huaweicloud.com:ExampleNamespace/ExampleRepository.git", "ssh_url": "git@codehub.devcloud.huaweicloud.com:ExampleNamespace/ExampleRepository.git", "http_url": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository.git" }, "commits": { //触发事件的提交的信息 "id": "0123456789012345678901234567890123456789", "message": "This is an example message", "timestamp": "2019-05-30T08:50:37Z", "url": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository/commit/0123456789012345678901234567890123456789", "author": { "name": "example_user", "email": "example@huawei.com" }"added": [ "src/main/java/HelloWorld.java" ], "modified": [], "removed": [] }, "total_commits_count": 1, "repository": { //仓库信息 "name": "ExampleRepository", "url": "git@codehub.devcloud.huaweicloud.com:ExampleNamespace/ExampleRepository.git", "description": "This is an example repository", "homepage": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository", "git_http_url": "https://codehub.devcloud.huaweicloud.com/ExampleNamespace/ExampleRepository.git", "git_ssh_url": "git@codehub.devcloud.huaweicloud.com:ExampleNamespace/ExampleRepository.git", "visibility_level": 0 } }
父主题: 仓库管理