Webhook
目录
您可以使用 Webhook 在响应仓库中的推送事件时在另一个服务中触发操作。Webhook 是发送到您在 Docker Hub 中定义的 URL 的 POST 请求。
创建 Webhook
要创建 Webhook
- 在您选择的仓库中,选择**Webhook**选项卡。
- 为 Webhook 提供一个名称。
- 提供一个目标 Webhook URL。这是传递 Webhook POST 请求的位置。
- 选择**创建**。
查看 Webhook 传递历史记录
要查看 Webhook 的历史记录
- 将鼠标悬停在**当前 Webhook 部分**下的 Webhook 上。
- 选择**菜单选项**图标。
- 选择**查看历史记录**。
然后,您可以查看传递历史记录,以及是否成功传递 POST 请求。
Webhook 负载示例
Webhook 负载具有以下 JSON 格式
{
"callback_url": "https://registry.hub.docker.com/u/svendowideit/testhook/hook/2141b5bi5i5b02bec211i4eeih0242eg11000a/",
"push_data": {
"pushed_at": 1417566161,
"pusher": "trustedbuilder",
"tag": "latest"
},
"repository": {
"comment_count": 0,
"date_created": 1417494799,
"description": "",
"dockerfile": "#\n# BUILD\u0009\u0009docker build -t svendowideit/apt-cacher .\n# RUN\u0009\u0009docker run -d -p 3142:3142 -name apt-cacher-run apt-cacher\n#\n# and then you can run containers with:\n# \u0009\u0009docker run -t -i -rm -e http_proxy http://192.168.1.2:3142/ debian bash\n#\nFROM\u0009\u0009ubuntu\n\n\nVOLUME\u0009\u0009[/var/cache/apt-cacher-ng]\nRUN\u0009\u0009apt-get update ; apt-get install -yq apt-cacher-ng\n\nEXPOSE \u0009\u00093142\nCMD\u0009\u0009chmod 777 /var/cache/apt-cacher-ng ; /etc/init.d/apt-cacher-ng start ; tail -f /var/log/apt-cacher-ng/*\n",
"full_description": "Docker Hub based automated build from a GitHub repo",
"is_official": false,
"is_private": true,
"is_trusted": true,
"name": "testhook",
"namespace": "svendowideit",
"owner": "svendowideit",
"repo_name": "svendowideit/testhook",
"repo_url": "https://registry.hub.docker.com/u/svendowideit/testhook/",
"star_count": 0,
"status": "Active"
}
}
验证 Webhook 回调
要验证 Webhook 链中的回调,您需要
- 检索请求的 JSON 负载中的
callback_url
值。 - 向此 URL 发送包含有效 JSON 主体的 POST 请求。
注意
只有在最后一个回调得到验证后,链请求才被视为完成。
回调 JSON 数据
以下参数在回调数据中被识别
state
(必需):接受的值是success
、failure
和error
。如果状态不是success
,则 Webhook 链将中断。description
:一个字符串,包含在 Docker Hub 上可用的其他信息。最大 255 个字符。context
:一个字符串,包含操作的上下文。可以从 Docker Hub 中检索。最大 100 个字符。target_url
:可以找到操作结果的 URL。可以在 Docker Hub 上检索。
以下是一个回调负载示例
{
"state": "success",
"description": "387 tests PASSED",
"context": "Continuous integration by Acme CI",
"target_url": "https://ci.acme.com/results/afd339c1c3d27"
}