Доступ к последующему параметру с использованием потока сборки
Предположим, у меня есть следующая нижестоящая работа:
// DOWNSTREAM JOB
DYNAMIC_VAR = ""
parallel(
{
DYNAMIC_VAR = new Date() // Some other value determined
// at runtime by this job
},
{
// Some other stuff...
}
)
Как часть моей вышестоящей работы (см. Пример ниже), я хочу иметь возможность вызывать нижестоящее задание и получать доступ к переменной, которая была установлена во время нижестоящего задания.
// UPSTREAM JOB
my_build = build("my-custom-job")
// Would like to beable to do something like
// out.println my_build.build.get_var('DYNAMIC_VAR')
// or
// out.println my_build.build.DYNAMIC_VAR
Просматривая вывод, кажется, что переменная не возвращена и, следовательно, недоступна. Я подозреваю, что это потому, что рассматриваемая переменная (DYNAMIC_VAR) доступна только во время нижестоящего задания, и, следовательно, после завершения задания переменная удаляется.
Мои два вопроса, которые я хотел задать, были:
- Верно ли, что переменные удаляются после завершения работы?
- У кого-нибудь есть идея, как этого можно (если можно) достичь (дополнительные плагины хороши, если требуется)?
2 ответа
Согласно комментариям здесь: https://issues.jenkins-ci.org/browse/JENKINS-18784
Вы можете сделать следующее:
// – In job First, I am setting the environment variable testKey
b = build( "First" )
// Then, using it in workflow:
out.println b.build.properties.environment['testKey']
// Or
b.build.properties.environment.testKey
1) Будет ли вывод пары переменная = значение в некоторый файл приемлемым для вас решением?
2) Я не очень часто использовал groovy в Jenkins, но все переменные среды задания хранятся в:
${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/injectedEnvWars.txt
Это может или не может потребовать плагин EnvInject.