【问题标题】:How can I know how long a Jenkins job has been in the wait queue after the job is finished?我如何知道 Jenkins 作业在作业完成后在等待队列中等待了多长时间?
【发布时间】:2015-07-01 16:21:47
【问题描述】:

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

如果作业只是在队列中,可以在首页的等待队列中找到,请参阅How can I tell how long a Jenkins job has been in the wait queue?

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

是否可以在某处检查以在作业完成后获取特定作业的“排队等候时间”?

如果可以在公共 jenkins API 中获取就更好了。

【问题讨论】:

    标签: groovy jenkins


    【解决方案1】:

    //得到同事的答复

    可以通过安装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()
    

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

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

    【讨论】:

    • 这不适用于 Jenkins 管道,即使作业等待数小时,插件也会报告零排队时间。
    • 仅供参考,groovy 脚本解决方案适用于 Jenkins 管道 (v2.73.x)。
    • @sorin ,我检查了我的管道工作,它有效。 (搜索queuingDurationMillis就是json结果。
    • @LarryCai 你知道如何在构建步骤执行本身中获取queuingDurationMillis吗?
    • 我猜你需要后期构建 groovy 脚本
    猜你喜欢
    • 2013-01-19
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多