使用构建流访问下游参数

时间:2015-07-22 14:12:00

标签: jenkins jenkins-plugins jenkins-build-flow

假设我有以下下游工作:

// 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 个答案:

答案 0 :(得分:0)

1)将变量=值对输出到某个文件是否是可接受的解决方案?

2)我没有在Jenkins中使用过groovy,但所有作业的环境变量都存储在:

${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/injectedEnvWars.txt

这可能需要EnvInject plugin,也可能不需要{。}}。

答案 1 :(得分:0)

根据这里的评论: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