--- /tmp/old 2017-10-11 09:46:39.726057354 +0200 +++ /tmp/new 2017-10-11 09:52:52.687891306 +0200 @@ -1,7 +1,11 @@ - +import groovy.time.* import hudson.model.* import hudson.console.ModelHyperlinkNote +// allowed time since previous build +max_time_diff = new TimeDuration(8,0,0,0) +max_time = max_time_diff.getAgo() + // Dependency Data dependencies = [ @@ -615,13 +619,23 @@ logMessage("Job ${job} not found!") return } + job.enable() + + last = job.getLastBuild() + if ((last.result == Result.SUCCESS || last.result == Result.UNSTABLE) && last.getTime() > max_time) { + time_diff = TimeCategory.minus(new Date(), last.getTime()) + logMessage(" Skipping ${linkTo(job)}, built ${time_diff} ago") + name = build.project.name + status[job.name] = last; + startableDownstreams(job.name).each { project -> scheduleBuild(project, parameters) } + return + } logMessage(" Scheduling build for ${linkTo(job)}") parameters = parameters.collect { parameter -> new StringParameterValue(parameter.key, parameter.value) } parametersAction = new ParametersAction(parameters) - job.enable() run = job.scheduleBuild2(0, new Cause.UpstreamCause(build), parametersAction) if (run) { running << run @@ -705,14 +719,7 @@ runHook("Running finish hook job", "distribution-finish-lsp-famula-nightly", parameters) -logMessage("Enabling all jobs") -dependencies.each { - job = Hudson.instance.getJob(it.key) - if (job) job.enable() -} - // Report and build result - unstable = status.findAll { entry -> entry.value.result == Result.UNSTABLE } *.value if (unstable) { println "${unstable.size} unstable build(s):" @@ -726,5 +733,20 @@ for (build in failed) { println " ${build.result} ${linkTo(build.project)}, ${linkTo(build)}" } - return -1 } +skipped = dependencies.findAll { + job = Hudson.instance.getJob(it.key) + job && job.disabled +} *.key +if (skipped) { + println "${skipped.size} skipped jobs(s):" + skipped.each { println " ${linkTo(Hudson.instance.getJob(it))}" } +} + +logMessage("Enabling all jobs") +dependencies.each { + job = Hudson.instance.getJob(it.key) + if (job) job.enable() +} + +return failed ? -1 : 0