Docker Hub Webhooks

预计阅读时间:3分钟

您可以使用 webhook 在另一个服务中触发操作,以响应存储库中的推送事件. Webhook 是发送到您在 Docker Hub 中定义的 URL 的 POST 请求.

通过 Docker Hub 存储库上的"Webhooks"选项卡配置 webhook:

Webhooks Page

Create Webhooks

要创建 webhook,请访问存储库的 webhook 选项卡. 然后:

  1. 提供 webhook 的名称
  2. 提供目标 webhook URL. 这是将传递 webhook POST 请求的地方:

Webhooks Create

View Webhook delivery history

您可以通过单击 webhook 的子菜单,然后单击"查看历史记录"来查看 Webhook 交付历史记录

Webhooks View History

然后,您可以查看传递历史记录,以及传递 POST 请求是成功还是失败:

Webhooks History

Example Webhook payload

Docker Hub 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"
  }
}

Validate a webhook callback

要验证 webhook 链中的回调,您需要

  1. 在请求的 JSON 有效负载中检索callback_url值.
  2. 向此 URL 发送一个包含有效 JSON 正文的 POST 请求.

注意:只有在验证了最后一个回调后,链请求才被视为完成.

Callback JSON data

在回调数据中识别以下参数:

  • state (必需):接受的值为successfailureerror . 如果状态不是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"
}
Docker, webhooks, hub, builds

by  icopy.site