在Jenkins中将作业A的工作区URL传递到作业B

时间:2020-04-23 04:50:10

标签: jenkins jenkins-pipeline jenkins-plugins

我有两个管道作业Job A和JobB。我需要传递Job A的工作区URL(例如/ var / lib / jenkins / workspace / JobA),以供Job B使用。主要思想是尝试复制由于Maven构建而生成的目标文件夹的内容,但我不想使用复制工件插件存档工件插件来实现相同目的。 / p>

我尝试使用选项“此作业已参数化”,其中作业A是作业B的上游,但我无法使用该选项。

任何人都可以帮助实现相同目标吗?

2 个答案:

答案 0 :(得分:0)

WORKSPACE变量是Jenkins的一个env变量,指向类似/。

For eg. 

If the job name is Job_A --> the workspace value will be <jenkins_path>/Job_A

For eg. 

If the job name is Job_B --> the workspace value will be <jenkins_path>/Job_B

所以您不能使用WORKSPACE变量,并且希望Job_B指向Job_A工作空间值。

以下内容可用于从上游作业获取某些属性。

Jenkins - How to get and use upstream info in downstream

即使您想在Job_B中对其进行硬编码也可以(不推荐) 同样,要使它正常工作,两个作业的节点应该相同

答案 1 :(得分:0)

我找到了一种方法来做,并且工作正常。 我已使用“此项目已参数化”并使用字符串参数将作业B设置为参数化作业。 enter image description here

然后,在作业A的管道脚本中,我通过传递WORKSPACE env变量来调用作业B。这是作业A的声明性管道脚本:

pipeline {
agent any
stages
{
    stage ('Build JobB')
    {
        steps {
          build job: 'jobB', parameters: [string(name: 'UPSTREAM_WORKSPACE', value: "${env.WORKSPACE}")]
        }
    }
} }

现在,在Job B管道中,您可以尝试回显变量UPSTREAM_WORKSPACE。这就是我们可以传递工作空间URL并使用它来复制工件的方法。