Вебхуки

Вы можете использовать веб-перехватчики, чтобы вызвать действие в другой службе в ответ на push-событие в репозитории. Веб-перехватчики — это запросы POST, отправляемые на URL-адрес, указанный в Docker Hub.

Настраиваете веб-перехватчики на вкладке «Веб-перехватчики» в репозитории Docker Hub:

Webhooks Page

Создание вебхуков

чтобы создать веб-перехватчик, перейдите на вкладку веб-перехватчиков вашего репозитория. Затем: 1. Указываете имя веб-перехватчика. 2. Указываете целевой URL-адрес веб-перехватчика. Сюда будут доставляться POST-запросы webhook:

Webhooks Create

Просмотр истории доставки Webhook

Вы можете просмотреть историю доставки веб-перехватчика, щелкнув подменю веб-перехватчика, а затем нажав «Просмотр истории»

Webhooks View History

Затем вы можете просмотреть историю доставки и узнать, была ли доставка запроса POST успешной или неудачной:

Webhooks History

Пример полезной нагрузки вебхука

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

Проверка обратного вызова веб-перехватчика

Чтобы проверить обратный вызов в цепочке веб-перехватчиков, вам необходимо

  1. Получаете значение callback_url в полезной нагрузке JSON запроса.

  2. Отправьте запрос POST на данный URL-адрес, содержащий допустимое тело JSON.

    Примечание

    Запрос цепочки считается выполненным только после проверки последнего обратного вызова.

Обратный вызов данных 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"
}