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

如何终止等待不存在节点的Jenkins任务?已配置Build Timeout插件无效

解决Jenkins任务等待不存在节点无限等待的方法

方法1:使用Queue Cleanup Plugin

这个插件专门用于管理Jenkins构建队列,支持按标签、任务名等条件筛选队列中的任务,可设置超时自动取消或手动清理。安装后:

  • 进入Jenkins全局配置,找到插件设置项
  • 添加规则:选择「Label」条件,填入目标标签xxxx,设置超时时间(比如10分钟),触发动作选择「Cancel the build」
  • 保存后,符合条件的等待任务会在超时后自动被取消

方法2:Groovy脚本手动/定时清理

在Jenkins「脚本控制台」(路径:Manage Jenkins > Script Console)执行以下脚本,可批量取消等待指定标签的任务:

def labelName = 'xxxx'
def queue = Jenkins.instance.queue
queue.items.each { item ->
    if (item.task instanceof hudson.model.AbstractProject) {
        def assignedLabel = item.task.assignedLabel
        if (assignedLabel != null && assignedLabel.name == labelName) {
            println "Cancelling build: ${item.task.name}"
            queue.cancel(item)
        }
    }
}
println "Done"

如果需要定期执行,可创建自由风格任务,配置定时触发并执行该脚本。

方法3:修改任务配置,提前拦截无效请求

对于涉及该标签的任务,修改配置:

  • 在「Restrict where this project can be run」选项中填写标签xxxx,点击「Advanced...」
  • 在「Run condition」中选择「Groovy script」(需安装Script Security Plugin),输入脚本判断标签是否有可用节点:
def label = Jenkins.instance.getLabel('xxxx')
return label != null && label.getNodes().size() > 0
  • 设置「If condition fails」为「Do not run」,这样当标签无可用节点时,任务不会进入队列等待,直接标记为失败

方法4:全局队列超时配置

安装Queue Management Plugin后,在Jenkins全局配置的「Queue Configuration」中设置全局队列超时时间,所有超过该时间仍未分配到节点的任务都会被自动取消,适合统一管理所有队列任务的场景


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 23:30:04