blob: 45c38a819dd1eb34349db2e8fe23af7234ff7fe1 [file] [log] [blame]
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Step to run all job matching certain criterium
import build.bazel.ci.JenkinsUtils
def call(params = [:]) {
def folder = params.get("folder", null)
def excludes = params.get("excludes", [currentBuild.getProjectName()])
def parameters = params.get("parameters", [])
def wait = params.get("wait", true)
def catchError = params.get("catchError", false)
def statusOnError = params.get("statusOnError", "FAILURE")
def statusOnFailure = params.get("statusOnFailure", "SUCCESS")
def statusOnUnstable = params.get("statusOnUnstable", "SUCCESS")
def jobs = JenkinsUtils.jobs(folder).toArray()
def toRun = [:]
def report = [:]
for (int k = 0; k < jobs.length; k++) {
def jobName = jobs[k]
if (!(jobName in excludes)) {
toRun[jobName] = { ->
try {
r = build(job: jobName, parameters: parameters, wait: wait, propagate: false)
if (r.result == "FAILURE") {
currentBuild.result = statusOnFailure
} else if (r.result == "UNSTABLE") {
currentBuild.result = statusOnUnstable
}
report.put(jobName, r)
} catch(error) {
if (catchError) {
echo "Catched ${error} from upstream job ${jobName}"
currentBuild.result = statusOnError
} else {
throw error
}
}
}
}
}
jobs = null
parallel(toRun)
return report
}