我如何从groovy脚本调用另一个jenkins构建作业

时间:2017-05-19 19:37:36

标签: jenkins

我想通过groovy调用另一个Jenkins构建作业,我该怎么做。我尝试过包括如下但没有运气

build 'job url' 

但得到了错误

  

错误:没有名为

的参数化作业

3 个答案:

答案 0 :(得分:6)

如果您正在使用Pipeline Plugin并且想要构建参数化作业,则可以执行以下操作:

假设你有一个“sonar-review”布尔参数:

build job: 'cargo-pipeline-ci-declarative', parameters: [booleanParam(name: 'sonar-review', value: false)]

如果您不需要构建没有参数的作业:

你可以这样做:

build "cargo-pipeline-ci-declarative"

请确保您已安装:

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin

答案 1 :(得分:4)

您正在谈论build步骤,对吧?

这会将作业名称作为参数,而不是URL。因此,要触发名为 test 的作业,请使用

build 'test'

似乎正在搜索参数化作业,可能是因为你提供了多个参数?请更准确地说明您的示例代码以及作业名称(是否在另一个文件夹中)?

答案 2 :(得分:2)

如果您真的只想通过URL发布作业,可以通过发布到

来进行
http://server/job/myjob/buildWithParameters?PARAMETER=Value 

有关详细信息,请参阅parameterized-builds

至于通过groovy,有几种方法可以做到这一点。既然你专门用groovy询问了Groovy plugin,它提供了一个如何触发另一个构建的例子。

您也可以使用jobs-dsl-plugin。但是管道工作流程正逐步淘汰。

因此我建议使用multibranch pipeline plugin,它允许您将管道编写为Jenkinsfile中的代码,而构建将自动触发存储库中的任何分支。只需创建一个多分支管道作业并将您的SCM设置到您的存储库。然后,项目根目录中带有Jenkinsfile的任何分支都将自动构建。

使用multibranch管道插件的一个好处是它提供了snippet generator,它将为您生成代码。这有助于学习语法以及如何自己编写代码。

最后,解决您的实际问题。您不提供网址,而是提供要触发的作业的名称。

您还需要考虑默认值。例如,下面我正在触发一个名为jobName的作业,它将在启动jobName之前等待10秒,即使触发的作业发生,我的上游作业也不会失败,而我的上游作业将不会等待在标记完成之前完成触发的作业。再次,请参阅代码段生成器以获取详细信息。

build job: 'jobName', propagate: false, quietPeriod: 10, wait: false