Jenkins使用文件夹插件的流水线。如何构建位于不同文件夹中的作业。

5

我正在使用 Jenkins 2.0 和Cloudbees文件夹插件,因为这使我可以创建多个相似的项目。每个文件夹中的作业可以被分解出来,留下一个顶层作业,然后可以调用参数化作业。

我想将参数化作业放在通用文件夹中,然后从管道脚本中调用它们。

因此,在Jenkins浏览器中,我会有3个文件夹:ProjA、ProjB和Generic。在ProjA下面,我有一个需要构建通用文件夹中名为TestJib的作业的管道作业。

我的管道如下:

node('master'){

    stage ('Run job'){ 
        build job: "../Generic/TestJob", 
        parameters: [[$class: 'StringParameterValue', name: 'testa', value: tests]]
    }
}

运行这个命令会得到以下结果:'错误:没有名为../TestJob的参数化作业' 我已经尝试了很多变种,如构建任务:"../Generic/TestJob",但我总是得到相同的错误。如果我把TestJob放在与流水线任务相同的文件夹中,它就能正常工作。

你尝试过使用绝对路径吗?例如:/Generic/TestJob - StephenKing
1个回答

9

您只需要在文件夹前面设置且不带斜杠。

如果您的FolderA文件夹中有一个名为JobA的任务,您的任务将如下所示:

stage ('My Stage'){ 
    build job: "FolderA/JobA", 
}

因此,对于您来说,解决方案将是:
node('master'){

stage ('Run job'){ 
    build job: "Generic/TestJob", 
    parameters: [[$class: 'StringParameterValue', name: 'testa', value: tests]]
  }
}

无论您的工作位于何处,您只需要指定完整路径。

文件夹路径是否相对于正在访问它的作业?你能做 ../otherfolder/jobname 吗? - red888
@red888 是相对路径,除非它以 / 开头。 - weshouman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接