Вопрос или проблема
У меня есть работа Jenkins Trigger builds remotely (e.g., from scripts)
, и хуки PULL-запросов Bitbucket запускают эту работу, можно сказать, что все работает нормально.
Jenkins умный, чтобы проверять любые изменения и собирать их.
На каждой сборке есть данные, которые изменяются и отправляются в формате json.
Существует ли способ извлечь эти данные, отправленные хуками в Jenkins, используя уже упомянутый триггер сборки?
Я не уверен, как достичь вашей цели со стороны BitBucket, но для каждой работы в Jenkins есть параметры метаданных, которые вы можете проверить, перейдя по ссылке, которая выглядит так:
http://your-ci-server/job_name/build_number/api/json
Пример:
https://lel.doesntexist.com/job/geek-kb/job/scripts/job/declarative_pipeline_test/2/api/json
Вы можете извлечь данные в переменные с помощью плагина Generic Webhook Trigger.
Ответ или решение
Извлечение данных из POST хуков в Jenkins с использованием Bitbucket
Ваша задача заключается в извлечении данных, которые Jenkins получает через POST хуки, отправляемые из Bitbucket. Этот процесс может быть реализован с помощью дополнительных инструментов и плагинов, таких как Generic Webhook Trigger Plugin.
Основы работы с хуками
-
Настройка хука в Bitbucket: Убедитесь, что вы создали Webhook в вашем репозитории Bitbucket, который будет отправлять POST запросы в Jenkins при каждом создании Pull Request или обновлении. Для этого перейдите в настройки репозитория → Webhooks и укажите URL вашего Jenkins:
http://your-ci-server/job/job_name/buildWithParameters
-
Настройка Jenkins для приема POST хуков: В Jenkins вы должны включить опцию
Trigger builds remotely (e.g., from scripts)
. Это позволит Jenkins принимать пост запроры, отправленные из Bitbucket.
Извлечение данных
Для извлечения необходимых данных, отправляемых в формате JSON, вы можете воспользоваться Generic Webhook Trigger Plugin:
-
Установка плагина: Установите плагин через раздел управления Jenkins (Manage Jenkins → Manage Plugins). Найдите
Generic Webhook Trigger Plugin
и установите его. -
Конфигурация работы с хуками:
- Перейдите в настройки вашего Jenkins job.
- В разделе "Build Triggers" отметьте "Generic Webhook Trigger".
- Настройте параметры, чтобы определить, какие данные вы хотите извлечь из JSON.
- Вы можете использовать выражения регулярных выражений для извлечения определённых значений из тела запроса.
-
Пример настройки условий:
С помощью этого плагина вы можете создать условия в вашем Jenkins job, которые будут извлекать данные из JSON, например:{ "pull_request": { "number": 123, "action": "opened", "repository": { "name": "example-repo" } } }
Используя регулярные выражения, настройте параметры для извлечения
number
,action
иrepository.name
, что позволит вам использовать эти значения в вашем процессе сборки.
Доступ к данным сборки
После завершения сборки в Jenkins, вы можете получить доступ ко всем метаданным сборки через API Jenkins. Это осуществляется следующим образом:
-
Формат запроса: Используйте следующий URL-формат для доступа к JSON метаданным вашей сборки:
http://your-ci-server/job/job_name/build_number/api/json
Замените
job_name
иbuild_number
на актуальные значения. -
Пример API запроса:
Чтобы получить данные по конкретной сборке, выполните запрос к следующему примеру:curl -X GET "http://your-ci-server/job/example-job/5/api/json"
Эта команда вернет подробную информацию о сборке, включая статусы, результаты, и извлеченные параметры из JSON.
Заключение
Используя Generic Webhook Trigger Plugin и API Jenkins, вы можете эффективно извлекать и использовать данные из POST хуков, отправляемых Bitbucket. Это не только автоматизирует процессы CI/CD, но и предоставляет важные метрики для анализа и мониторинга. Убедитесь, что вы правильно настроили все элементы для корректного функционирования.