Как настроить почтовый веб-крючок из BitBucket в Kafka REST Proxy?

Я пытаюсь опубликовать данные (полезную нагрузку) из BitBucket на мой экземпляр Kafka в случае каких-либо событий BitBucket (например, Pushed, Forked, PR creating, Addition / Modification / Deletion пиар-комментарии и т. д.)

Итак, я настроил rest-прокси Kafka, но я не могу отправить данные из BitBucket в Kafka, так как Content-Type требуется опубликовать данные с использованием прокси Kafka REST application/vnd.kafka.json.v2+json и полезная нагрузка BitBucket имеет заголовок, установленный как application/json (Я использую стандартный BitBucket webhook, настроенный на Repository уровень).

Я настроил Webhook на уровне хранилища следующим образом:

Это запрос, который запускается из WebHok BitBucket:

И ответ, который я получаю от REST Proxy Кафки, таков:

Я думал о следующих решениях:

  1. Я могу написать простой веб-сервер, который выступает посредником между двумя системами (BitBucket и Kafka). Сервер может выступать в качестве промежуточного прокси-сервера и получать входящие запросы от веб-крючка BitBucket и публиковать его на Kafka REST proxy используя соответствующий заголовок (application/vnd.kafka.json.v2+json).

    Это решение работает, но минусами являются обслуживание другого сервера (написано мной). Кроме того, он может иметь проблемы с масштабируемостью, поскольку BitBucket начинает часто запускать веб-хуки (100 с в секунду в часы пик, поскольку у нас только один экземпляр BitBucket и около 3500 разработчиков).

  2. Я могу использовать плагин BitBucket, который работает как webhook и который позволяет мне настраивать и изменять заголовки на лету. Это решение, которого я стремлюсь достичь. Не требует дополнительного сервера для обслуживания.

Есть ли плагин BitBucket, который я могу установить с рынка, который позволит мне настроить заголовок при запуске веб-крюка?

PS - извиняюсь за написание такого длинного вопроса. Эти два решения просто с моей головы. Я не удивлюсь, если будет доступно лучшее решение для интеграции BitBucket с Kafka. Также, пожалуйста, дайте мне знать, если вопрос остается неясным. В этом случае я попытаюсь прояснить свой вопрос по-другому.

Спасибо

0 ответов

Вы можете использовать Pipedream для приема веб-запросов от Bitbucket, изменить Content-Type заголовок к application/vnd.kafka.json.v2+jsonи перешлите запрос к вашему REF прокси Kafka. Запуск таких конвейеров на Pipedream бесплатный.

Я создал пример конвейера, который показывает вам, как это работает. Он принимает полезную нагрузку HTTP, отправленную из Bitbucket - $event.body - и использует немного кода Node.js для пересылки запроса на другую конечную точку HTTP.

В моем случае я просто добавил URL-адрес RequestBin, чтобы вы могли видеть где-нибудь POST размещенные тело и заголовки - посмотрите пример запроса, который я отправил сюда. Разверните раздел Заголовки этого запроса и обратите внимание на Content-Type заголовок правильно установлен application/vnd.kafka.json.v2+json,

Если вы разветвляете конвейер выше (просто нажмите кнопку Fork в правом верхнем углу), он должен сгенерировать пользовательский URL, специфичный для вашего конвейера. Добавьте этот URL-адрес в качестве нового URL-адреса Bitbucket webhook, привязанного к вашему репозиторию, и вы должны начать видеть новые события.

Предполагается, что ваш URL-адрес прокси-сервера Kafka REST общедоступен. Весь код для конвейеров Pipedream является общедоступным, поэтому, если вы хотите сохранить частную конечную точку прокси-сервера KEST REF Proxy, вы можете создать переменную среды и сослаться на нее в коде Node.js, заменив URL-адрес RequestBin значением этой переменной среды.

Например, я мог бы создать переменную среды с именем KAFKA_REST_ENDPOINT и заменить:

url: 'https://entygbild98b.x.pipedream.net'

с участием

url: process.env.KAFKA_REST_ENDPOINT

Дайте мне знать, если это поможет или у вас есть какие-либо вопросы.

Другие вопросы по тегам