文档首页 > > 用户指南> 云端仓库管理> 设置WebHook

设置WebHook

分享
更新时间:2020/10/19 GMT+08:00

WebHook简介

  • WebHook允许开发人员通过订阅 CodeHub的仓库的分支推送(push)、标签推送(tag push)等事件来触发自己系统的构建、更新镜像、部署等操作。
  • 当您配置了WebHook 的 URL,CodeHub服务会在您进行订阅范围内的操作时,给您的配置的 URL发送 POST请求。

如何在DevCloud的代码托管服务中设置WebHook

webhook设置位于仓库详情中的 设置 > 仓库管理 > webhook设置

此设置只针对被设置的仓库生效。

只有仓库管理员和仓库所有者能看到这个页面且有设置权限。

  • 每个仓库最多只能设置20个WebHook。
  • 您在配置 WebHook 的时候,还可以选择设置您的 Token,该 Token 会与您的 WebHook URL 关联,我们会将该 token 放在请求头的 X-Devcloud-Token 字段发送给您。

代码托管服务的WebHook都有哪些事件(Events)?

  • 当您配置了 WebHook,您可以选择订阅哪些仓库事件,只有当订阅了的仓库事件发生了,CodeHub 才会给您发送请求,也可以通过 WebHook 设置页面随时更改您订阅的事
  • CodeHub提供了以下事件供您订阅:
    • 推送事件
    • 标签推送事件
    • 合并请求事件
    • 评论事件
  • 举个例子:当您的 WebHook 订阅了合并请求事件,那么当该仓库每新建,关闭,重开任意一个合并请求时,CodeHub 都会给您配置的 WebHook URL 发送一个 POST 请求告知您该事件的发生,这样您可以在有新的合并请求变更的时候处理您的一些事务。

    POST请求信息

    CodeHub给你发送的 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
      }
    }
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问