如何通过Jenkins API查询指定Job的队列任务数量?
查询Jenkins特定Job的队列任务数量的API方法
Jenkins 提供了多种API方式来查询特定Job的队列任务数量,以下是几种实用方案:
1. 队列全局API+过滤
通过Jenkins的全局队列API获取所有排队任务,再过滤出目标Job的条目:
- 请求地址:
GET /queue/api/json - 可通过
tree参数精简返回数据,减少传输量,示例:GET /queue/api/json?tree=items[id,task[name]] - 解析返回的JSON数据,遍历
items数组,统计其中task.name与你的Job名称匹配的条目数量,即为该Job的排队任务数。
2. Job专属队列API
部分Jenkins版本支持直接针对单个Job查询其排队任务:
- 请求地址:
GET /job/{JOB_NAME}/queueItem/api/json - 若该Job有排队任务,返回的JSON是包含对应条目的数组,数组长度就是排队数量;若无排队任务,则返回空数组。
3. Groovy脚本查询
如果具备Jenkins脚本执行权限,可通过Groovy脚本直接获取:
def targetJobName = "你的Job名称" def queue = Jenkins.instance.queue def pendingCount = queue.items.count { it.task.name == targetJobName } println("目标Job的排队任务数量:${pendingCount}")
可以在Jenkins脚本控制台执行这段代码,也可在Pipeline中调用(需确保有对应权限)。
注意事项
- 调用API时需确保拥有
Read权限,若Jenkins开启了权限验证,需携带认证信息(如API Token)。 - 不同Jenkins版本的API细节可能略有差异,建议在你的实例上先测试端点可用性。
内容的提问来源于stack exchange,提问作者deewreck
相关产品推荐
相关产品推荐

