詹金斯·乔布(Jenkins Job)在24小时内检查失败的工作
问题描述:
这个脚本给了我所有詹金斯失败的工作.但是,我试图仅查看过去24小时内失败的作业.有没有一种方法可以使我根据时间获得失败的工作?
This script gives me all Jenkins failed jobs. However, I am trying to see failed jobs from last 24 hours only. Is there a way i can get failed job based on time?
def jobBuilds=it.getLastFailedBuild()
jobBuilds.each { build ->
def currentStatus = build.buildStatusSummary.message
if (currentStatus.contains("broken")) {
println "Build: ${build} | Status: ${currentStatus}"
}
}
}
**My Jenkins Console output**
Last Failed Job and Build: 24-hours-job-status #20 | Status : broken since build #18
[Pipeline] echo
Last Failed Job and Build: analyze #29 | Status : broken since build #28
[Pipeline] echo
Last Failed Job and Build: build-status #11 | Status : broken since this build
[Pipeline] echo
Last Failed Job and Build: git-hub-project #4 | Status : broken since this build
[Pipeline] echo
Last Failed Job and Build: job1 #2 | Status : broken since this build
[Pipeline] echo
Last Failed Job and Build: job2 #2 | Status : broken since this build
[Pipeline] echo
Last Failed Job and Build: job3 #2 | Status : broken for a long time
[Pipeline] echo
Last Failed Job and Build: job4 #6 | Status : broken since build #3
[Pipeline] echo
Last Failed Job and Build: success-failed-job #54 | Status : broken since build #53
[Pipeline] End of Pipeline
Finished: SUCCESS
答
类似于以下内容的解决方案应该会启发您
A solution similar to the following should inspire you
import hudson.model.Job
import hudson.model.Result
import hudson.model.Run
import java.util.Calendar
import jenkins.model.Jenkins
//24 hours in a day, 3600 seconds in 1 hour, 1000 milliseconds in 1 second
long time_in_millis = 24*3600*1000
Calendar rightNow = Calendar.getInstance()
Jenkins.instance.getAllItems(Job.class).findAll { Job job ->
!job.isBuilding()
}.collect { Job job ->
//find all matching items and return a list but if null then return an empty list
job.builds.findAll { Run run ->
job.lastBuild.result == Result.FAILURE && ((rightNow.getTimeInMillis() - run.getStartTimeInMillis()) <= time_in_millis)
} ?: []
}.sum().each{ job ->
println "${job}"
}