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
相关产品推荐
相关产品推荐

