Проблема с универсальным плагином запуска Webhook в Jenkins

#jenkins #github

#дженкинс #github

Вопрос:

Я пытаюсь использовать универсальный плагин запуска Webhook в Jenkins для запуска сборки на случай, если в моем репозитории GitHub возникнет какой-либо PR. Для начала я определил переменную «current_status», сопоставив ее с полем «действие» в полезной нагрузке json, которая будет получена с GitHub. В то время как сборка запускается при повышении PR, но значение current_status принимает значение null. Тип содержимого для моего веб-крючка GitHub — «application / json»

Переменная внутри Jenkins

Полезная нагрузка GitHub, сгенерированная для события PR, содержит поле действия: «действие»: «открыто», но когда я пытаюсь напечатать эту переменную, используя println «$ {params.current_status}» в моем конвейере, значение печатается как null.

Также, когда я пытаюсь выполнить шаг на основе значения переменной, используя

 when {
     expression { return params.current_status == "opened" }
} 
  

этап пропускается, даже если значение в соответствии с действием в полезной нагрузке GitHub «открыто»

Для отладки проблемы, когда я выбрал опцию для печати внесенных переменных в журнале заданий, я мог видеть значение значения current_status как открытое

введите описание изображения здесь

Но когда я ссылаюсь на эту переменную в своем конвейере, ее значение каким-то образом оказывается нулевым.

В качестве обходного пути я разделил мой конвейер, используя для переменной то же имя, что и то, которое определено в разделе общего плагина триггера Webhook (current_status), а затем сослался на него в моем Jenkinsfile, и это сработало.(значение переменной отражает значение, полученное в полезной нагрузке json из GitHub).

Ответ №1:

Наконец-то я нашел решение. Для тех, кто может столкнуться с такой же проблемой, вы можете ссылаться на переменную, определенную в универсальном плагине запуска Webhook, непосредственно как на заводную переменную. В моем случае я попытался использовать переменную current_status напрямую, не ссылаясь на нее через параметры, и она работала, как ожидалось.

Может быть полезен другой подход определения переменной с помощью параметризованного конвейера, при котором мы хотели бы запустить сборку вручную.