Jenkins - 使用声明性Jenkinsfile触发多个上游更改的管道

时间:2017-10-27 04:24:20

标签: jenkins jenkins-pipeline

我试图让Jenkins上游触发器处理多个项目,看起来它是根据Other available triggers支持的,并且当多个"项目/分支"字面上指定了ares,但是当我输入带有分支匹配的代码时,它不起作用。

工作代码 - 使用下面的代码,构建由proj1 / dev或proj2 / dev的成功构建触发。

triggers {
   upstream(
        ‘proj1/dev,proj2/dev’, thresholdhudson.model.Result.SUCCESS
)

}

无法使用代码 - 使用以下代码,虽然Jenkins没有语法错误,但未触发构建。

triggers {
  upstream(
        upstreamProjects: ‘”proj1/“ + env.BRANCH_NAME.replaceAll("/", "%2F”),”proj2/“ + env.BRANCH_NAME.replaceAll("/", "%2F")',
 threshold: hudson.model.Result.SUCCESS
)

}

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你的整个事情都被单引号所包围。这意味着您将其设置为单引号内的确切文本,而不是使用变量进行设置。并且您没有正确构建字符串,逗号和引用不正确。它应该只是:

triggers {
  upstream(
        upstreamProjects: 'proj1/' + env.BRANCH_NAME.replaceAll('/', '%2F') + ', proj2/' + env.BRANCH_NAME.replaceAll('/', '%2F'),
 threshold: hudson.model.Result.SUCCESS
)

如果你不是内插变量,我也更喜欢单引号,正如我上面所做的那样。

另一个选项作为带有插值变量的单个字符串。这有点容易阅读:

triggers {
  upstream(
        upstreamProjects: "proj1/${env.BRANCH_NAME.replaceAll('/', '%2F')},proj2/${env.BRANCH_NAME.replaceAll('/', '%2F')}",
 threshold: hudson.model.Result.SUCCESS
)

希望您的所有智能引号在代码中实际上都不是智能引号,或者那些不能正常工作的引号。我希望这只是一个复制/粘贴错误,将代码放入您的帖子。