Thanks to visit codestin.com
Credit goes to docs.github.com

Skip to main content

Устранение неполадок веб-перехватчиков

Узнайте, как диагностировать и устранять распространенные ошибки для веб-перехватчиков.

Отсутствующие поставки веб-перехватчика

Если вы не получаете доставку веб-перехватчика, которую вы ожидаете, следует определить точку, в которой отсутствует доставка.

  1. Активируйте событие, которое ожидается привести к доставке веб-перехватчика. Например, если веб-перехватчик является веб-перехватчиком репозитория, который подписан issues на событие, можно открыть проблему в этом репозитории.

  2. Просмотрите журнал последних поставок для веб-перехватчика. Сведения о том, как это сделать для каждого типа веб-перехватчика, см. в разделе Просмотр доставленных данных веб-перехватчика.

    Если журнал недавних поставок не включает доставку, соответствующую событию веб-перехватчика, которое было активировано на предыдущем шаге, то GitHub не пытались выполнить доставку. Чтобы определить причину, выполните следующие действия.

    1. Подождите несколько минут, а затем снова проверьте. Доставка веб-перехватчика может занять несколько минут.

    2. Убедитесь, что вы активировали событие в расположении, где настроен веб-перехватчик. Например, если веб-перехватчик является веб-перехватчиком репозитория, убедитесь, что вы активировали событие в том же репозитории, где настроен веб-перехватчик.

    3. Убедитесь, что веб-перехватчик подписан на событие, которое вы активировали. Например, если при открытии проблемы ожидается доставка веб-перехватчика, убедитесь, что веб-перехватчик подписан на issues событие.

    4. Убедитесь, что веб-перехватчик активен. Дополнительные сведения см. в разделе Отключение веб-перехватчиков.

    5. Убедитесь, что веб-перехватчик не влияет на ограничения доступа OAuth app. Если веб-перехватчик был создан OAuth app от имени пользователя, авторизованного OAuth app, веб-перехватчик будет автоматически отключен, если это организация или веб-перехватчик репозитория для организации, которая имеет ограниченный доступ к OAuth app. Дополнительные сведения см. в разделе Сведения об ограничениях доступа к приложению OAuth.

    6. Проверьте, может ли событие достигнуть задокументированного ограничения. Например, при отправке нескольких трех тегов push событие не будет активировано для отправки. Дополнительные сведения об задокументированных ограничениях для каждого события см. в разделе События и полезные данные веб-перехватчика.

    7. Проверьте состояние веб-перехватчиков в githubstatus.com.

    Если в журнале недавних поставок указано, что с доставкой произошла ошибка, то GitHub попыталась выполнить доставку, но доставка была неудачной. Обычно это связано с проблемой с сервером. См. приведенные ниже разделы, чтобы устранить определенную ошибку.

  3. Просмотрите журналы для сервера. Сведения в журналах зависят от кода, выполняемого сервером для обработки доставки веб-перехватчиков. Для диагностики проблем на сервере может потребоваться добавить дополнительные инструкции журнала в код.

Не удается иметь более 20 webhooks

Можно создать до 20 репозитория или организации webhooks для каждого типа события. Если вы пытаетесь создать больше, вы получите сообщение об ошибке о том, что у вас не может быть больше 20 веб-перехватчиков.

Если требуется более 20 webhooks, можно запустить прокси-сервер, который получает веб-перехватчики из GitHub и перенаправляет их на неограниченное количество URL-адресов назначения.

Локальный узел URL-адреса не поддерживается

Нельзя использовать localhost или 127.0.0.1 как URL-адрес веб-перехватчика.

Для доставки веб-перехватчиков на локальный сервер для тестирования можно использовать службу пересылки веб-перехватчиков. Дополнительные сведения см. в разделе Тестирование веб-перехватчиков или посетите сайт https://smee.io/.

Не удалось подключиться к узлу

Ошибка возникает, когда GitHub пытается доставить вебхук, но не удаётся разрешить URL вебхука на IP-адрес, либо существуют сетевые ограничения, failed to connect to host мешающие подключению к хосту.

Чтобы проверить, разрешается ли имя узла в IP-адрес, можно использовать nslookup. Например, если URL-адрес полезных данных имеет значение https://octodex.github.com/webhooks, можно запустить nslookup octodex.github.com. Если имя узла не удалось разрешить в IP-адрес, команда nslookup будет указывать, что сервер не может найти имя узла.

Убедитесь, что сервер разрешает подключения с GitHub. Вы можете использовать конечную точку GET /meta для поиска текущего списка данных . Дополнительные сведения см. в разделе Конечные точки REST API для метаданных. GitHub иногда вносит изменения в его IP-адреса, поэтому периодически следует обновлять список разрешений IP-адресов.

Не удалось подключиться к сети

Ошибка failed to connect to network указывает, что сервер отказался от подключения, когда GitHub попыталась доставить веб-перехватчик.

Убедитесь, что сервер разрешает подключения с GitHub. Вы можете использовать конечную точку GET /meta для поиска текущего списка данных . Дополнительные сведения см. в разделе Конечные точки REST API для метаданных. GitHub иногда вносит изменения в его IP-адреса, поэтому периодически следует обновлять список разрешений IP-адресов.

Истекло время ожидания

Ошибка timed out указывает, что GitHub не получил ответ от сервера в 10 секунды доставки веб-перехватчика.

Сервер должен реагировать на ответ 2xx в 10 секунды получения доставки веб-перехватчика. Если сервер занимает больше времени, чем для ответа, GitHub завершает подключение и рассматривает сбой доставки.

Чтобы своевременно реагировать, может потребоваться настроить очередь для обработки полезных данных веб-перехватчика асинхронно. Сервер может реагировать, когда он получает веб-перехватчик, а затем обрабатывать полезные данные в фоновом режиме, не блокируя будущие поставки веб-перехватчика. Например, можно использовать такие службы, как Hookdeck или библиотеки, такие как Resque (Ruby), RQ (Python) или RabbitMQ.

Не удается пройти проверку подлинности однорангового сертификата с помощью заданных сертификатов ЦС

Эта ошибка означает, что возникла проблема, связанная с сертификатами сервера. Наиболее распространенными проблемами являются:

  • Сервер использует самозаверяющий сертификат.
  • Сервер не отправляет полную цепочку сертификатов при установке подключения.

Чтобы диагностировать проблему, можно использовать тест SSL-сервера из лабораторий SSL. Эта служба может работать только с портом по умолчанию для HTTPS (порт 443) и работать только с серверами, доступными из Интернета.

Вы также можете использовать openssl для диагностики проблемы. Для этого запустите openssl s_client -connect HOST:PORT терминал. Замените HOST именем узла сервера и PORT портом. Например, openssl s_client -connect example.com:443. Чтобы определить проблемы, найдите verify error в выходных данных.

Недопустимый HTTP-ответ

Ошибка invalid HTTP response возникает, когда сервер возвращает состояние 4xx или 5xx в ответ на доставку веб-перехватчика из GitHub.

Необходимо настроить сервер для возврата состояния 2xx. Если сервер возвращает состояние 4xx или 5xx, GitHub записывает доставку как сбой.

Доставка веб-перехватчиков не упорядочена

GitHub может доставлять веб-перехватчики в другом порядке, чем в порядке, в котором произошли события. Если необходимо знать, когда событие произошло относительно другого события, следует использовать метки времени, включенные в полезные данные доставки.

Доставка веб-перехватчика не является немедленной

Доставка веб-перехватчика может занять несколько минут и появиться в журнале последних поставок. Прежде чем завершить доставку веб-перехватчика, подождите несколько минут, а затем снова проверьте.

Если ваша учетная запись испытывает всплеск поставок веб-перехватчика, GitHub может временно опустить частоту поставок в вашу учетную запись. Если доставка веб-перехватчика замедляется с помощью GitHub, throttled_at свойство для каждой затронутой доставки показывает метку времени при регулировании доставки. Это можно проверить с помощью REST API, см. в разделе "Список поставок" для веб-перехватчика репозитория.

Чтобы избежать задержек, подпишитесь только на события веб-перехватчика, необходимые для вашей учетной записи, уменьшая частоту доставки. См. раздел "Рекомендации по использованию веб-перехватчиков".

Сбой проверки подписи

Необходимо использовать секрет веб-перехватчика и X-Hub-Signature-256 заголовок, чтобы убедиться, что доставка веб-перехватчика осуществляется из GitHub. Дополнительные сведения см. в разделе Проверка доставки веб-перехватчика.

Если вы уверены, что полезные данные находятся из GitHub, но проверка подписи завершается ошибкой:

  • Убедитесь, что вы настроили секрет для веб-перехватчика. Заголовок X-Hub-Signature-256 не будет присутствовать, если вы не настроили секрет для веб-перехватчика. Дополнительные сведения о настройке секрета для веб-перехватчика см. в разделе Редактирование веб-перехватчиков.
  • Убедитесь, что используется правильный заголовок. GitHub рекомендует использовать X-Hub-Signature-256 заголовок, который использует алгоритм HMAC-SHA256. Заголовок X-Hub-Signature использует алгоритм HMAC-SHA1 и включается только в устаревшие цели.
  • Убедитесь, что используется правильный алгоритм. При использовании заголовка X-Hub-Signature-256 следует использовать алгоритм HMAC-SHA256.
  • Убедитесь, что вы используете правильный секрет веб-перехватчика. Если вы не знаете значение секрета веб-перехватчика, вы можете обновить секрет веб-перехватчика. Дополнительные сведения см. в разделе Редактирование веб-перехватчиков.
  • Убедитесь, что полезные данные и заголовки не изменяются перед проверкой. Например, если вы используете прокси-сервер или подсистему балансировки нагрузки, убедитесь, что прокси-сервер или подсистема балансировки нагрузки не изменяет полезные данные или заголовки.
  • Если в реализации языка и сервера указана кодировка символов, убедитесь, что полезные данные обрабатываются как символы UTF-8. Полезные данные веб-перехватчика могут содержать символы юникода.