如何访问我从上次成功构建中定义的环境变量

时间:2019-07-04 17:47:45

标签: jenkins-pipeline

我正在尝试从另一个作业'B'访问我在作业'A'中定义的环境变量

作业'A'通过-定义它

evn.upload_loaction = "loc"

在作业B中,我试图访问作业A的最后一次成功构建并获取该变量-

        def item = Jenkins.instance.getItem("deploy-artifact-pipeline")
        def dev_deployed_build=item.getLastSuccessfulBuild()
        def envVars= dev_deployed_build.getEnvVars()
        echo envVars['upload_loaction']   // prints null
        echo envVars['BUILD_NUMBER'] // prints 21

无法识别我的自定义变量,但可以使用诸如build_number之类的通用变量。

当我将作业A触发为下游作业时,我可以使用-

def jLz = build (job: 'deploy-artifact-pipeline')
echo jLz.buildVariables.PROCESSOR_UPLOAD_LOCATION // prints loc

有人可以帮我吗?还是有更好的方法来存储和访问先前版本中的变量?

2 个答案:

答案 0 :(得分:0)

EnvInject插件和Pipeline作业不是并行的,如果需要存储一些环境变量,我通常更喜欢将该作业作为自由样式作业,您可以在其中将env变量发送到该作业的末尾版本,可以使用“ injectedEnvVars / api / json”访问特定版本

答案 1 :(得分:0)

我处理的另一种方法是使用所需信息创建工件文件。在另一个Jenkins管道中,我下载了工件文件并读取其中的信息。