import hudson.model.*
import hudson.node_monitors.*
import hudson.slaves.*
import java.util.concurrent.*
import groovy.time.*
now=new Date()
jenkins = Hudson.instance
search_mb=[job]
search_non_mb=[old_job]
full=[:];
builds=[:];
for (item in jenkins.items){
for (job in item.getAllJobs()){
for (build in job.getBuilds()){
full[build.displayName] = [
name: build.displayName,
time: build.getTime(),
ts: build.getTime().getTime(),
url: build.getUrl(),
building: build.building,
failed: (build.result == hudson.model.Result.FAILURE),
];
}
}
job = item
for (build in job.getBuilds()){
def parameters = build?.actions.find{ it instanceof ParametersAction }?.parameters
parameters.each{
branch = it.value
}
}
full[build.displayName] = [
name: build.displayName,
branch: branch,
time: build.getTime(),
ts: build.getTime().getTime(),
url: build.getUrl(),
building: build.building,
failed: (build.result == hudson.model.Result.FAILURE),
];
}
}
}
full = full.sort { -it.value.ts }
for (build in full){
item = build.value
branchDecoded=java.net.URLDecoder.decode(item.branch, "UTF-8");
TimeDuration duration = TimeCategory.minus(now, item.time)
if (duration.days >= 7) {
duration=duration.minus(new TimeDuration(duration.hours, duration.minutes, duration.seconds, duration.millis))
} else if (duration.days >= 1) {
duration=duration.minus(new TimeDuration(0,duration.minutes,duration.seconds, duration.millis))
}else if (duration.hours >= 1) {
duration=duration.minus(new TimeDuration(0,0,duration.seconds, duration.millis))
} else {
duration=duration.minus(new TimeDuration(0,0,0, duration.millis))
}
timestamp = "${duration} ago"
value="${
item.name}|${
item.id}|${item.branch}|${item.ts}|${item.url}|${item.project}"
display="${
item.name} (${branchDecoded}, ${timestamp})"
if (item.building){
display += " **BUILDING**"
} else if (item.failed){
display += " **FAILED**"
}
builds[value] = display
}
return builds