Jenkins - Как установить переменные окружения с помощью плагина Groovy Postbuild

Я сделал много Google для этой проблемы и не нашел ничего, что помогло бы решить мою проблему.

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

Я мог бы получить нужное мне строковое значение из консоли, используя

def build = Thread.currentThread().executable    
def matcher = manager.getLogMatcher(".*myEnvironemntValue: (.*)")

if(matcher != null && matcher.matches()) {
    log('found my value')
    myEnvironemntValue= matcher.group(1).substring(0)
    def pa = new ParametersAction([
          new StringParameterValue("MY_ENV_VALUE", myEnvironemntValue)
    ])
    build.addAction(pa)
    manager.addInfoBadge(myEnvironemntValue)
}

Обновить

У меня есть задание buildflow (родительское задание), из которого я буду называть другие дочерние задания, используя скрипт DSL, что-то вроде

def b1 = build("child_job1", NODE: node)
def b2 = build("child_job2", NODE: node)

Детская работа child_job1 а также child_job2 являются многофазными заданиями, они по очереди вызывают другие задания, скажем, phase1_job, phase2_job а также phase3_job

После работы phase3_job выполняется, я хотел бы получить конкретное значение из его консоли.


Может ли кто-нибудь помочь в решении этой проблемы? Я могу использовать другие плагины, если они помогают мне получить значение консоли и установить его в качестве переменной среды

1 ответ

Стоит отметить, что сборка Groovy Post выполняется на главном сервере, поэтому установка переменных среды может оказаться не такой, как вы хотели.

При этом, вероятно, есть множество способов передать эту информацию родителю. Родительская работа ждет, когда ребенок завершит работу? Если это так, вы можете сохранить переменную среды в качестве артефакта и развернуть ее, используя модель Jenkins, http или даже файловую систему (если родительский элемент запущен на главном сервере или вы обращаетесь к нему через родительский Groovy Postbuild).

Решит ли это вашу проблему? Если нет, не могли бы вы рассказать о том, как все устроено, и, возможно, привести нам пример?

Другие вопросы по тегам