Извлеките данные, которые Jenkins получает из POST-хуков, отправленных, например, github или bitbucket.

Вопрос или проблема

У меня есть работа 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.

Основы работы с хуками

  1. Настройка хука в Bitbucket: Убедитесь, что вы создали Webhook в вашем репозитории Bitbucket, который будет отправлять POST запросы в Jenkins при каждом создании Pull Request или обновлении. Для этого перейдите в настройки репозитория → Webhooks и укажите URL вашего Jenkins:

    http://your-ci-server/job/job_name/buildWithParameters
  2. Настройка Jenkins для приема POST хуков: В Jenkins вы должны включить опцию Trigger builds remotely (e.g., from scripts). Это позволит Jenkins принимать пост запроры, отправленные из Bitbucket.

Извлечение данных

Для извлечения необходимых данных, отправляемых в формате JSON, вы можете воспользоваться Generic Webhook Trigger Plugin:

  1. Установка плагина: Установите плагин через раздел управления Jenkins (Manage Jenkins → Manage Plugins). Найдите Generic Webhook Trigger Plugin и установите его.

  2. Конфигурация работы с хуками:

    • Перейдите в настройки вашего Jenkins job.
    • В разделе "Build Triggers" отметьте "Generic Webhook Trigger".
    • Настройте параметры, чтобы определить, какие данные вы хотите извлечь из JSON.
    • Вы можете использовать выражения регулярных выражений для извлечения определённых значений из тела запроса.
  3. Пример настройки условий:
    С помощью этого плагина вы можете создать условия в вашем Jenkins job, которые будут извлекать данные из JSON, например:

    {
     "pull_request": {
       "number": 123,
       "action": "opened",
       "repository": {
         "name": "example-repo"
       }
     }
    }

    Используя регулярные выражения, настройте параметры для извлечения number, action и repository.name, что позволит вам использовать эти значения в вашем процессе сборки.

Доступ к данным сборки

После завершения сборки в Jenkins, вы можете получить доступ ко всем метаданным сборки через API Jenkins. Это осуществляется следующим образом:

  1. Формат запроса: Используйте следующий URL-формат для доступа к JSON метаданным вашей сборки:

    http://your-ci-server/job/job_name/build_number/api/json

    Замените job_name и build_number на актуальные значения.

  2. Пример 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, но и предоставляет важные метрики для анализа и мониторинга. Убедитесь, что вы правильно настроили все элементы для корректного функционирования.

Оцените материал
Добавить комментарий

Капча загружается...