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

如何为Jenkins声明式流水线的Agent选择添加超时机制

解决Jenkins声明式流水线Agent选择阶段超时问题

你遇到的问题确实是因为全局agent的节点分配发生在流水线初始化阶段,这时候options里的timeout还未生效。要给Agent选择步骤添加超时限制,需要调整流水线结构,具体做法如下:

  1. 全局设置agent none,避免流水线启动时立即尝试分配节点
  2. 在第一个阶段中,用timeout块包裹node节点选择逻辑,这样等待Agent的过程会被超时控制

修改后的完整流水线代码:

pipeline {
    agent none  // 全局不指定agent,避免提前分配节点
    parameters {
        choice(
            name: 'AGENT',
            description: 'Host where the pipeline will be run.',
            choices: [ 'foo', 'bar' ],
        )
    }
    stages {
        stage('Allocate Agent') {
            steps {
                timeout(time: 5, unit: 'MINUTES') {  // 这里设置Agent选择的超时时间
                    node(params.AGENT) {
                        echo "Successfully connected to agent: ${params.AGENT}"
                        // 后续阶段直接在该节点内执行
                        stage('Rest of the pipeline') {
                            steps {
                                echo "the rest of my pipeline..."
                            }
                        }
                    }
                }
            }
        }
    }
    post {
        aborted {
            echo "Agent selection timed out after 5 minutes"
        }
    }
}

关键说明:

  • agent none:让流水线启动时不立即分配节点,把节点分配逻辑延后到阶段内执行
  • timeout包裹node:当指定Agent离线时,等待节点的过程会在设定时间后超时,流水线进入中止状态
  • 后续阶段可以直接嵌套在node块内,自动复用已分配的Agent;如果需要拆分阶段,也可以在后续阶段通过agent { label params.AGENT }指定复用该节点
  • post的aborted阶段可以添加超时后的提示或清理操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:22:14