如何从Groovy脚本中调用另一个Jenkins构建任务

7
我希望通过groovy调用另一个Jenkins构建作业,我该如何做。我尝试了像下面这样的包含方式,但没有成功。
build 'job url' 

但是出现了错误

错误:没有名为参数化作业的工作

3个回答

11

如果您正在使用Pipeline插件,并且想要构建一个带参数的任务,可以执行以下操作:

假设您有一个名为“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


感谢您的回复 - 构建“cargo-pipeline-ci-declarative”对我有用。 - Vin
为什么使用单引号双引号? - ablarg
如果作业在子目录中排序,例如/job/mydirectory/job/myjob,该怎么办? - Sandburg
1
如果@Sandburg,则名称必须为“mydirectory/myjob”。 - Daniel Hernández

5
你在谈论 build 步骤,是吗?
这个步骤需要作业名称作为参数,而不是一个 URL。所以要触发名为 test 的作业,请使用
build 'test'

似乎正在搜索参数化作业,可能是因为您提供了多个参数?请在示例代码和作业名称方面更加精确(它是否在另一个文件夹中)?

2

如果您只想通过URL来触发工作,您可以通过发布到以下URL来实现:

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

详细信息请参见参数化构建

就Groovy而言,有几种方法可以实现这个功能。由于您特别提到了Groovy,请参见Groovy插件,它提供了一个触发另一个构建的示例。

您还可以使用jobs-dsl-plugin。但是,这已被流水线工作流逐步替换。

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

使用多分支流水线插件的好处是它提供了代码片段生成器,它将为您生成代码。这有助于学习语法以及如何自己编写代码。

最后,要解决实际问题。您没有提供URL,而是要触发的作业名称。

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

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

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