我想通过groovy调用另一个Jenkins构建作业,我该怎么做。我尝试过包括如下但没有运气
build 'job url'
但得到了错误
错误:没有名为
的参数化作业
答案 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)
您正在谈论jenkins-pipeline的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