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

问题描述 投票:0回答:3

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

build 'job url' 

但出现错误

错误:没有名为

的参数化作业
jenkins
3个回答
11
投票

如果您正在使用 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


5
投票

您正在谈论

build
步骤,对吧?

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

build 'test'

似乎正在寻找一个参数化的工作,也许是因为你给出了多个参数?请更准确地说明您的示例代码以及作业名称是什么(是否在另一个文件夹中)?


2
投票

如果您确实只想通过 URL 解雇工作,您可以通过发布到

http://server/job/myjob/buildWithParameters?PARAMETER=Value 

有关详细信息,请参阅参数化构建

就 groovy 而言,有几种方法可以做到这一点。既然您专门询问了 groovy,请参阅 Groovy 插件,它提供了有关如何触发另一个构建的示例。

您还可以使用 jobs-dsl-plugin。但这正在被管道工作流程逐步淘汰。

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

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

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

您还需要考虑默认值。例如,下面我触发了一个名为

jobName
的作业,它将在启动
jobName
之前等待 10 秒,即使触发的作业失败,我的上游作业也不会失败,并且我的上游作业不会等待触发的作业在将其自身标记为完成之前完成。再次,请参阅片段生成器了解详细信息。

build job: 'jobName', propagate: false, quietPeriod: 10, wait: false
© www.soinside.com 2019 - 2024. All rights reserved.