Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins-如何仅在另一个作业失败n次时运行作业_Jenkins_Jenkins Plugins_Jenkins Groovy - Fatal编程技术网

Jenkins-如何仅在另一个作业失败n次时运行作业

Jenkins-如何仅在另一个作业失败n次时运行作业,jenkins,jenkins-plugins,jenkins-groovy,Jenkins,Jenkins Plugins,Jenkins Groovy,仅当另一个作业(jobA)在上次成功后失败n次时,我才想触发/启动作业(jobA)。 我看到了这一点——但对于触发器,您只能说“失败”,但无法定义它是否应该在计数器失败后触发 谢谢 Chris我的groovy脚本解决了这个问题。用于在jobA上执行脚本。谢谢Ian W的支持 import hudson.model.* import jenkins.model.Jenkins job_name = "jobA" job_name_to_run = "jobB&quo

仅当另一个作业(jobA)在上次成功后失败n次时,我才想触发/启动作业(jobA)。 我看到了这一点——但对于触发器,您只能说“失败”,但无法定义它是否应该在计数器失败后触发

谢谢
Chris

我的groovy脚本解决了这个问题。用于在jobA上执行脚本。谢谢Ian W的支持

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

job_name = "jobA"
job_name_to_run = "jobB"
triggerThreshold = 2
last_succ_num = 0
last_job_num = 0
def currentBuild = Thread.currentThread().executable
def job = Hudson.instance.getJob(job_name)
def job_data = Jenkins.instance.getItemByFullName(job.fullName)
println 'Job: ' + job_data.fullName
if (job_data.getLastBuild()) {
   last_job_num = job_data.getLastBuild().getNumber()
}
println 'last_job_num: ' + last_job_num
if (job_data.getLastSuccessfulBuild()) {
   last_succ_num = job_data.getLastSuccessfulBuild().getNumber()
}
println 'last_succ_num: ' + last_succ_num
doRunJob =(last_job_num - last_succ_num >= triggerThreshold)
println 'do run job? ' + doRunJob
if (doRunJob){
  def jobToRun = Hudson.instance.getJob(job_name_to_run)
  def cause = new Cause.UpstreamCause(currentBuild)
  def causeAction = new hudson.model.CauseAction(cause) 
  Hudson.instance.queue.schedule(jobToRun, 0, causeAction)
}

我猜你是说连续n次失败?编写一个groovy脚本来检查lastBuild-lastSuccessfulBuild>=n,然后为您的输入触发jobBthanks。使用groovy脚本是可行的