如何在主作业中触发不同的作业

时间:2017-08-31 12:06:44

标签: jenkins jenkins-plugins

我有一个包含字符串参数字段(称为JOB_NAME)的作业,在此字符串参数中,我将用另一个作业名称填充它。 在同一份工作中,我创建了“触发/调用构建在另一个项目上”,最近,我将只提供$ JOB_NAME,但它无效。

我的第二个问题是如何使用常规表达式或其他内容填充$ JOB_NAME字段和一些现有作业。

有人能为我提供明确的步骤,我不是詹金斯的专家。

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以使用Groovy Postbuild Plugin来实现此目标。

安装插件后,转到构建后操作,然后选择 Groovy Postbuild 选项,并将以下脚本添加到其中。

然后,每当你运行你的工作时,它会询问JOB_NAME,因为你已经将它定义为你工作中的参数,你将输入的任何项目名称,它将在下游触发该工作。

import hudson.model.*
import jenkins.model.*

def build = Thread.currentThread().executable

def jobPattern = manager.build.buildVariables.get("JOB_NAME") 
def matchedJobs = Jenkins.instance.items.findAll { job ->
    job.name =~ /$jobPattern/
}
matchedJobs.each { job ->
    println "Triggering ${job.name} in the down stream...."
    job.scheduleBuild(1, new Cause.UpstreamCause(build), new ParametersAction([ new StringParameterValue("PROPERTY1", "PROPERTY1VALUE"),new StringParameterValue("PROPERTY2", "PROPERTY2VALUE")]))
}