Доступ к последующему параметру с использованием потока сборки

Предположим, у меня есть следующая нижестоящая работа:

// 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) доступна только во время нижестоящего задания, и, следовательно, после завершения задания переменная удаляется.

Мои два вопроса, которые я хотел задать, были:

  1. Верно ли, что переменные удаляются после завершения работы?
  2. У кого-нибудь есть идея, как этого можно (если можно) достичь (дополнительные плагины хороши, если требуется)?

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.

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