Дженкинс: возникают проблемы при передаче переменной среды для использования в другой работе (возможно, ошибка) - PullRequest
0 голосов
/ 19 декабря 2018

Кажется, я обнаружил ошибку при попытке передать переменные среды из одного задания Jenkins в другое.

У меня есть задание Jenkins, которое содержит шаг сборки Powershell.Мой вопрос не о скрипте Powershell, поскольку он делает именно то, что я хочу (он идет в Artifactory, находит список всех сборок, а затем получает номер сборки последней).Скрипт заканчивается номером сборки Artifactory в виде текстовой строки ' $ LATEST_BUILD_NO_SLASH ' (для ясности, это не номер сборки Jenkins).В конечном итоге это сохраняется как переменная окружения с именем ' LATEST_BUILD_NUM_VAL ' Powershell code to created env variable

Это определенно создает переменную окружения с моим значением, хранящимся в ней, так как это можетбыть увиденным в списке «Переменные среды».Environment Variables list

Эта переменная среды передается стандартным способом на шаге параметризованной сборки.parameterized build step

Моя проблема в том, что когда я использую эту переменную среды в нисходящей сборке, передав ее с использованием ' LATEST_BUILD_NUM = $ {LATEST_BUILD_NUM_VAL }', я получаю' $ {LATEST_BUILD_NUM_VAL} ' в качестве значения, переданного нижестоящему заданию:
Latest build number

Но, если я передам переменную среды, созданную Jenkins, т.е.' LATEST_BUILD_NUM = $ {JOB_BASE_NAME} ' Я получаю правильную переменную в последующем задании: JOB_BASE_NAME

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

Есть ли другой способ достижения того, что я пытаюсь сделать?

Я зарегистрировался вЖурнал «Jenkins Issues» для проблем с параметризованными сборками , и я не могу найти ничего похожего на мою проблему.

В случае, если это имеет какое-либо отношение, плагин Jenkins Environment Injector - v2.1.6, а плагин Parameterized Trigger - v2.35.2.

1 Ответ

0 голосов
/ 21 декабря 2018

Этого легко достичь в Jenkins Pipeline:

Ваша вторая работа (JobB) вызывается из вашей первой работы (JobA) как последующая работа.Таким образом, где-то (вероятно, в конце вашего конвейера JobA) у вас будет:

build job: 'CloudbeeFolder1/Path/To/JobB', propagate: false, wait: false, parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: "${env.SOME_VALUE}"]]

Затем в JobB на "другой стороне" у вас есть:

environment {
    PARAM_FROM_PIPELINE = "${params.MY_PARAM}"
}

Получите значениевашего параметра в переменную окружения в JobB.

...