Привет! Надеюсь, вам понравился этот пост. На этот раз я объясню, как использовать 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 и как это помогает вашему подходу с использованием архитектуры, управляемой событиями? Оставляйте свои комментарии, мне будет очень приятно их прочитать. Желаю хорошей недели!