WebHooks V2

WebHooks V2 是全新的一套 WebHook 系统。WebHooks V2 改变了一些原有的字段名,已经输出的数据结构,使得输出的数据更加全面,更加容易和第三方服务进行整合。为了使以前已经在使用 WebHooks 服务的用户能够不存在兼容性的问题,老版的 WebHooks 服务将会被保留。

WebHook 允许第三方应用监听 Coding.net 上的特定事件,以用来集成。当触发这些事件之一时,我们将向 WebHook 配置的 URL 以 HTTP POST 方式发送事件相关的内容。

WebHook 可用于更新外部问题跟踪器,触发 CI 构建,更新备份镜像,甚至部署到生产服务器,并且一切你能想象得到的功能。

WebHook 的功能设置目前在项目的「设置」菜单中。

事件

配置 WebHook 时,您可以选择要接收的事件。默认情况下,WebHooks 只订阅 push 与 merge request 事件。

每个事件都对应于您的项目可能发生的某些特定操作。 例如,如果您订阅了合并请求事件,您将在每次打开,关闭等操作时收到详细的事件内容。

目前可用的事件是(其余事件会陆续增加):

Events 说明
push 所有使用 Git 客户端对仓库执行 push 操作时间,包含新建删除分支,新建删除标签,以及在线编辑代码等。(默认选项)
merge request Merge Request 的新建,关闭,拒绝,合并等事件。(默认选项)

数据结构

每个事件类型都具有与该事件相关的数据结构。 不同事件的数据结构有所不同,但是都会包含事件的执行者(sender)以及事件发生所属的项目(repository)。

发送 Headers 说明

Header 说明
X-Coding-Event 事件名(例如: push, merge request)
X-Coding-Signature 通过 HMAC SHA1 加密算法、使用令牌作为 KEY 将发送内容加密后的值以十六进制显示(需要配置令牌),并包含前缀 sha1=
X-Coding-Delivery 标识此次发送的唯一 ID
User-Agent Coding.net Hook

发送的具体内容

POST /payload HTTP/1.1

Host: localhost:4567
Request method: POST
User-Agent: Coding.net Hook
X-Coding-Event: push
X-Coding-Delivery: bf3f043a-3883-433c-8e20-312b04c49b46

{
  "ref": "refs/heads/master",
  "before": "1b4d2b060ef9e9a32f86be8c416a84a24806b575",
  "after": "860385d69eda49a4af9379c844701163d19c8d6b",
  "compare": "https://test.coding.net//p/test-webhook/git/compare/1b4d2b060ef9e...860385d69eda4",
  ...
  "repository": {
    "id": 4021,
    "name": "test-webhook",
    "full_name": "test/test-webhook",
    "owner": {
      "id": 652,
      "login": "crystal",
      "url": "https://test.coding.net/user/key/crystal",
      "html_url": "https://test.coding.net//u/crystal"
    },
    ...
  },
  ...
  "sender": {
    "id": 613,
    "login": "jiong",
    ...
  }
}

签名解析 Demo

每个事件都包含的属性

Key Value
sender 事件触发者
repository 当前项目

Ping 事件

当您创建一个新的 WebHook 时,我们将向您发送一个简单的 ping 事件,让您知道 WebHook 是否能够成功发送。您可以在 WebHooks 列表中,通过点击 ping 按钮再次触发 ping。

事件名: ping

Key Value
zen Coding! 让开发更简单
hook_id 当前 WebHook 的 ID
hook 当前 WebHook 的配置数据

Push 事件

当您向您的仓库推送新的代码时,我们将向您发送一个的 Push 事件。

事件名: push

Key Value
hook_id 当前 WebHook 的 ID
hook 当前 WebHook 的配置数据
ref 推送的 commit sha
before 该分支之前的 commit sha
after 该分支新的 commit sha
compare compare 的 url 地址
commits 更新的 commits 内容
head_commit 最新的 commit 内容
pusher 推送者

MR 事件

当您进行一个代码合并相关操作时,我们将向您发送的 MR 事件。

事件名: merge request

Key Value
action (“synchronize”, “create”, “merge”)
number 项目内资源 id
mergeRequest 合并请求内容

Task 事件

当您进行任务相关操作时,我们将向您发送 Task 事件。

事件名: task

Key Value
action (“assigned”, “labeled”, “opened”, “edited”, “closed”, “reopened”, “deleted”)
task 任务内容

Document 事件

当您进行文件相关操作时,我们将向您发送 Document 事件。

事件名: document

Key Value
action (“create_file”, “create_dir”, “delete_file”, “delete_dir”, “update_file”, “update_dir”, “upload_file”, “move_file”, “delete_file_history”, “rename”, “move_folder”, “move_files_or_folders”, “share_file”, “stop_share_file”)
document 文件内容

Member 事件

当您新增或者删除项目成员时,我们将向您发送 Member 事件。

事件名: member

Key Value
action (“added”, “deleted”)
member member 内容