Привет! Надеюсь, вам понравился этот пост. На этот раз я объясню, как использовать Jenkins и RabbitMQ в архитектуре, управляемой событиями.

Преимущества:

– Выполнять асинхронные задания jenkins от производителя.
– Запускать развертывания в разных средах.
– Отвечать от Jenkins потребителю, чтобы уведомить о выполнении задач.

Откройте веб-приложение Jenkins и нажмите Новый элемент.

Разрешающий штекер

Откройте веб-приложение Jenkins и нажмите Управление Jenkins.

Затем нажмите Управление подключаемыми модулями, чтобы включить подключаемые модули RabbitMQ.

Включите подключаемые модули RabbitMQ Consumer и RabbitMQ Build Trigger, мы будем использовать эти подключаемые модули для включения de consumir и получения сообщения.

Придется ждать перезапуска Дженкинса

Пока Jenkins работает, мы можем создать очередь на RabbitMQ, для этого примера мы будем использовать test_queue.

Доступ к Управлению Jenkins, а затем к настройке системы. Этот шаг очень важен. В разделе Service URI мы помещаем URI AMQP, используя:

amqp://пользователь:пароль@имя хоста:порт/

Я использую образ RabbitMQ Docker, и у меня есть контейнеры Jenkins и RabbitMQ в одной сети, поэтому я могу подключиться к брокеру RabbitMQ по имени хоста.

Затем нажмите «Очереди» и введите пример очереди.

Итак, давайте создадим новый элемент, мы можем использовать проект Freestyle.

Триггер сборки RabbitMQ находится в разделе «Триггеры сборки», установите флажок, а затем введите токен. Каждый раз, когда очередь получает сообщение с одним и тем же токеном Jenkins, будет выполняться новый элемент.

Мы можем протестировать Jenkins Job, отправив сообщение через RabbitMQ Queue.

В разделе публикации сообщения мы можем использовать 2 свойства: content_type: application/json и app_id:remote-build, также мы можем использовать полезную нагрузку с двумя атрибутами проекта и токена. Мы используем именно те значения, которые мы настроили для jenkins, как показано на следующем рисунке.

Каждый раз, когда отправляется сообщение с тем же именем проекта и токеном, выполняется элемент Jenkins.

Выводы

  • Можно ли выполнять задания Jenkins из любого потребителя RabbitMQ
  • С помощью этой техники вы можете интегрировать многие виды технологий, например, я использовал ее для выполнения заданий ETL из углового приложения.
  • Вы можете отправить ответное сообщение от jenkins с помощью команды или с помощью плагина для отправки сообщения потребителю.

Что вы думаете об использовании Jenkins и RabbitMQ и как это помогает вашему подходу с использованием архитектуры, управляемой событиями? Оставляйте свои комментарии, мне будет очень приятно их прочитать. Желаю хорошей недели!