我有两个管道作业Job A和JobB。我需要传递Job A的工作区URL(例如/ var / lib / jenkins / workspace / JobA),以供Job B使用。主要思想是尝试复制由于Maven构建而生成的目标文件夹的内容,但我不想使用复制工件插件或存档工件插件来实现相同目的。 / p>
我尝试使用选项“此作业已参数化”,其中作业A是作业B的上游,但我无法使用该选项。
任何人都可以帮助实现相同目标吗?
答案 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设置为参数化作业。
然后,在作业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并使用它来复制工件的方法。