0

假设我有以下下游工作:

// 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. 有谁知道如何如果可以)实现(如果需要,可以使用其他插件)?
4

2 回答 2

0

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

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

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

这可能需要也可能不需要EnvInject 插件

于 2015-07-23T10:53:13.887 回答
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
于 2018-02-06T14:28:33.040 回答