Рубрики
Без рубрики

Lgtm Devlog 10: захват веб -крючки GitHub для запросов на вилку

Теперь, когда у нас настройка парикматериалы, пришло время посмотреть, что дает нам GitHub Data через Webhook … Tagged с DevJournal, Python, Serverless, Cloud.

LGTM (40 частей серии)

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

Я собираюсь настроить Webhooks для репо и скажу, чтобы он отправил мне только Webhooks для Forks.

Некоторые из настройки, которые я использовал:

  • URL полезной нагрузки В конечном итоге это будет наша конечная точка облачных функций. Я использую чрезвычайно полезный ngrok Служба временного туннелирования конечной точки, оснащенной HTTS, на мою локальную машину без необходимости иметь дело с DNS и PortForbaring.
  • Тип контента Я хочу использовать данные JSON, так что это установлено на Приложение/JSON
  • Секрет WebHook будет использовать этот секрет для расчета подписи и добавить его в заголовок запроса в качестве дополнительного уровня безопасности, чтобы мы могли отклонить самозванцев, пытаясь запустить нашу конечную точку с помощью поддельных данных.
  • SSL -проверка Это заставляет GitHub проверить, что наша конечная точка имеет действительный сертификат SSL при отправке данных. Наличие этого является нормой в наши дни, необычно не иметь его. Поскольку мы используем функции Firebase, SSL уже будет настроен для нас, поэтому нам не нужно беспокоиться об этом
  • Какие события? Нам нужно только услышать о вилках на данный момент, поэтому я выбираю это

С помощью этой настройки сохраните его, а затем идите, создайте еще одну учетную запись GitHub, из которой я могу попытаться разобраться в этом репо (я назвал учетную запись «LGTM-Garry», потому что я буду использовать эту учетную запись для одной из NPC позже). Как только я это сделаю, я смогу запустить NGROK, вставить новый временный URL в раздел GitHub Webhooks и получать данные WebHook. Поскольку у меня на самом деле нет конечной точки для Ngrok для пересылки, он генерирует ошибку Bad Gateway 502, но я все еще могу получить доступ к полезной нагрузке через локальный веб -интерфейс Ngrok.

Та же самая полезная нагрузка доступна в разделе «Показания» Github:

Вся полезная нагрузка довольно большая и, кажется, полон URL -адресов, которые могут быть полезны. Я предполагаю, что политика GitHub по этому поводу состоит в том, чтобы создать все URL -адреса, чтобы потребитель API было легким, чтобы потребитель не имел необходимости использовать любую логику на своем конце для построения URL -адресов. Это означает, что GitHub могут свободно изменять формат URL, не нарушая потребительский код.

После просмотра полезной нагрузки JSON, это, кажется, единственные соответствующие части, которые нам нужны:

{
  "forkee": {
    "owner": {
      "login": "LGTM-garry",
      "id": 76662434,
    },
    "url": "https://api.github.com/repos/LGTM-garry/lgtm"
  },
  "repository": {
    "full_name": "meseta/lgtm"
  }
}

Эта полезная нагрузка содержит:

  • Имя пользователя GitHub и удостоверение личности аккаунта, которая развела. Нам нужно это, чтобы ассоциировать игровые данные с учетной записью, и я думаю, что нам нужно также хранить идентификатор, чтобы избежать разрыва вещей, если они меняют свое имя пользователя.
  • API URL результирующей вилки. Нам нужно это, чтобы мы могли отправить проблемы позже. Я Подумайте Это этот URL, который нам нужен, хотя я вполне могу узнать, что это другой URL позже, посмотрим.
  • Репозиторий, который был раздвоен. Нам нужно, чтобы это дважды проверило это репо, который был разднулся. Если в будущем по какой -то причине у нас есть несколько репо, я не хочу путать, какой из них был просто раздвоен.

В то время как заголовок содержит эти заголовки для проверки:

  • X-hub-signature: подпись SHA1
  • X-Hub-Signature-256: SHA256 Подпись

GitHub’s Документация Об этих подписях описывает нам, как реализовать проверку подписи, и быстрый поиск в Google показывает некоторые Примеры Python/Flask что мы можем прикрутить.

LGTM (40 частей серии)

Оригинал: “https://dev.to/meseta/lgtm-devlog-10-capturing-the-github-webhook-for-fork-requests-3o3e”