You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins:如何获取指定任务队列中的构建数量及构建编号?

获取Jenkins指定任务的等待构建数量及编号

通过Jenkins REST API实现

  • 获取等待构建数量:
    调用Jenkins队列的API接口拿到队列数据,过滤出指定任务的等待项。示例命令(替换你的Jenkins地址和任务名):

    curl -s "http://<JENKINS_URL>/queue/api/json" | jq '.items[] | select(.task.name=="<YOUR_JOB_NAME>")' | wc -l
    

    这里用jq解析JSON,筛选出任务名匹配的队列项,再用wc -l统计数量。如果没装jq,也可以用其他JSON解析工具或手动处理。

  • 获取等待构建的相关标识:
    等待中的构建还未生成正式的build number,但可以获取队列项的唯一ID(id字段);如果是参数化构建,还能提取参数里自定义的编号(比如参数名为BUILD_NUMBER的话)。示例jq命令提取ID和参数:

    curl -s "http://<JENKINS_URL>/queue/api/json" | jq '.items[] | select(.task.name=="<YOUR_JOB_NAME>") | {queue_id: .id, params: .parameters}'
    

通过Jenkins脚本控制台(Groovy)实现

直接在Jenkins的「脚本控制台」(路径:http://<JENKINS_URL>/script)执行Groovy代码,更灵活:

  • 统计数量:

    def jobName = "<YOUR_JOB_NAME>"
    def queue = Jenkins.instance.queue
    def waitingItems = queue.items.findAll { it.task.name == jobName }
    println "等待构建数量:${waitingItems.size()}"
    
  • 获取队列项信息:
    扩展上面的代码,获取队列ID和参数(如果是参数化构建):

    def jobName = "<YOUR_JOB_NAME>"
    def queue = Jenkins.instance.queue
    def waitingItems = queue.items.findAll { it.task.name == jobName }
    
    waitingItems.each { item ->
        println "队列ID:${item.id}"
        // 如果是参数化构建,提取参数
        if (item.parameters) {
            def buildNumParam = item.parameters.find { it.name == "BUILD_NUMBER" }
            if (buildNumParam) {
                println "自定义构建编号:${buildNumParam.value}"
            }
        }
    }
    

    注意:等待中的构建没有正式的Jenkins构建编号,只有队列ID;如果是手动指定了参数化编号,才能提取到对应值。

内容的提问来源于stack exchange,提问作者sumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:01:14