码云 WebHook 功能是帮助用户 push 代码后,自动回调一个您设定的 http 地址。 这是一个通用的解决方案,用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等)。
添加 WebHook
设置页面
项目主页 > 管理页面 > WebHooks
参数说明URL(*): 接收 WebHook 数据的 http 地址。码云将发送 Post 请求到这个地址
密码: 为了保证安全以及识别数据来源,建议设置一个密码。码云将会在 Post 数据中携带这个密码。注意, 密码是明文
钩子: 用户在码云上可触发的 WebHook,支持添加多个钩子
钩子类型
目前, 码云支持以下 5 种钩子:Push: 项目推送代码、推送 / 删除分支
Tag Push: 新建 / 删除 tag
Issue: 新建任务、变更任务状态、更改任务指派人
Pull Request: 新建、更新pr代码、合并 Pull Request
评论: 评论项目、任务、Pull Request、Commit
测试 WebHook
在添加 WebHook 后,可测试 WebHook 是否可正常使用。码云将发送测试数据到指定的 URL
支持第三方应用
我们为了方便用户在第三方平台接收到码云的推送,已通过 WebHook 支持以下第三方应用钉钉机器人: 设置 WebHook URL 为钉钉机器人地址。 具体请查看 码云的 WebHook 增加对钉钉的支持
Slack 机器人: 设置 WebHook URL 为 Slack 机器人地址
WebHook 推送数据
Request Headers
WebHook request headers 包含以下一些关键数据Content-Type: application/json # 默认为 application/json , 若是旧版钩子(已不维护)为 application/x-www-form-urlencoded
User-Agent: git-oschina-hook # 固定为 git-oschina-hook,可用于标识为来自 gitee 的请求
X-Gitee-Token: webhook password # 用户新建 WebHook 时提供的密码
X-Gitee-Event: Merge Request Hook # 标识触发的钩子类型
Request Payload
Webhook request payload 根据不同钩子,分为 4 种类型 payload, 以下是各钩子推送的示范数据(仅供参考,请以实际收到的数据为准)
Push / Tag Push 钩子
以下是一次推送代码触发的钩子数据{
"hook_name": "push_hooks",
"password": "pwd",
"ref": "refs/heads/change_commitlint_config",
"before": "0000000000000000000000000000000000000000",
"after": "1cdcd819599cbb4099289dbbec762452f006cb40",
"created": true,
"deleted": false,
"compare": "https://gitee.com/oschina/gitee/compare/0000000000000000000000000000000000000000...1cdcd819599cbb4099289dbbec762452f006cb40",
"commits": [
{
"id": "1cdcd819599cbb4099289dbbec762452f006cb40",
"tree_id": "db78f3594ec0683f5d857ef731df0d860f14f2b2",
"distinct": true,
"message": "Update README.md",
"timestamp": "2018-02-05T23:46:46+08:00",
"url": "https://gitee.com/oschina/gitee/commit/1cdcd819599cbb4099289dbbec762452f006cb40",
"author": {
"time": "2018-02-05T23:46:46+08:00",
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"committer": {
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"added": null,
"removed": null,
"modified": [
"README.md"
]
}
],
"head_commit": {
"id": "1cdcd819599cbb4099289dbbec762452f006cb40",
"tree_id": "db78f3594ec0683f5d857ef731df0d860f14f2b2",
"distinct": true,
"message": "Update README.md",
"timestamp": "2018-02-05T23:46:46+08:00",
"url": "https://gitee.com/oschina/gitee/commit/1cdcd819599cbb4099289dbbec762452f006cb40",
"author": {
"time": "2018-02-05T23:46:46+08:00",
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"committer": {
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"added": null,
"removed": null,
"modified": [
"README.md"
]
},
"total_commits_count": 0,
"commits_more_than_ten": false,
"repository": {
"id": 120249025,
"name": "Gitee",
"path": "gitee",
"full_name": "开源中国/Gitee",
"owner": {
"id": 1,
"login": "robot",
"avatar_url": "https://gitee.com/assets/favicon.ico",
"html_url": "https://gitee.com/robot",
"type": "User",
"site_admin": false,
"name": "robot",
"email": "robot@gitee.com",
"username": "robot",
"user_name": "robot",
"url": "https://gitee.com/robot"
},
"private": false,
"html_url": "https://gitee.com/oschina/gitee",
"url": "https://gitee.com/oschina/gitee",
"description": "",
"fork": false,
"created_at": "2018-02-05T23:46:46+08:00",
"updated_at": "2018-02-05T23:46:46+08:00",
"pushed_at": "2018-02-05T23:46:46+08:00",
"git_url": "git://gitee.com:oschina/gitee.git",
"ssh_url": "git@gitee.com:oschina/gitee.git",
"clone_url": "https://gitee.com/oschin