我如何知道 Jenkins 作业完成后在等待队列中等待了多长时间?

How can I know how long a Jenkins job has been in the wait queue after the job is finished?

为了统计,我想看看作业在等待队列中的时间,因此我可以调整系统以使作业及时运行。

如果任务刚好在队列中,可以在首页的等待队列中找到How can I tell how long a Jenkins job has been in the wait queue?

或者http://<jenkins_url>/queue/api/json?pretty=true

是否可以在某处检查以在作业完成后获取特定作业的 "Time waiting in queue"?

如果能在 public jenkins API.

中得到就好了

// 得到了同事的回答

可以通过安装Jenkins Metrics Plugin来实现,安装完成后,在构建结果页面会看到

Jenkins REST API: 然后你可以从 http://localhost:8080/job/demo/1/api/json?pretty=true&depth=2 得到队列中的等待时间。 queuingDurationMillis是我要的数据

"actions" : [
{
  "queuingDurationMillis" : 33,
  "totalDurationMillis" : 3067
}
],

Groovy 脚本:我们也可以通过内部数据在 groovy 中获取此数据,在 Jenkins 脚本控制台 http://localhost:8080/script 中检查以下代码

job = hudson.model.Hudson.instance.getItem("demo")
build = job.getLastBuild()
action = build.getAction(jenkins.metrics.impl.TimeInQueueAction.class)
println action.getQueuingDurationMillis()

您可以在下面看到 运行 使用 docker 的演示,并在浏览器中打开 demo 作业

docker run -it -p 8080:8080 larrycai/jenkins-metrics