如何使作业dsl设置的环境变量在下游作业中可用?

时间:2019-06-26 14:52:58

标签: jenkins jenkins-pipeline jenkins-job-dsl

作业播种器创建一个管道作业,并使用作业dsl设置环境变量,如下所示,该管道作业触发另一个作业(例如job2),而后者又触发另一个作业(例如job3)。我希望在触发的作业中访问种子作业中设置的环境变量。

pipelineJob("job1"){
  description("job1..")
  concurrentBuild(false)
  environmentVariables(
         globalEnv + [TEMP_ENV1               : 'true',
                      TEMP_ENV2               : 'true'
                     ]
   )
  definition {
      cps {
         script(
               """
job1script()
"""
         )
      }
   }
}

我想访问job3中的TEMP_ENV1和TEMP_ENV2,但在此作业中两者均为空。我有一个签入脚本,哪个job3执行了它,但失败了,例如  if (env.TEMP_ENV1) { }

1 个答案:

答案 0 :(得分:0)

您应该使用构建步骤(https://jenkins.io/doc/pipeline/steps/pipeline-build-step/)调用作业,并将它们作为参数传递:

build(
    job: "myjob2", 
    parameters: [
        string(name: 'TEMP_ENV1', defaultValue: TEMP_ENV1, description: 'Temp env var 1')
    ], 
    propagate: false
)