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

Jenkins:为Stage设置超时并继续执行后续Stage的实现方法

实现远程Shell脚本Stage超时后自动进入下一Stage的方案

嘿,这个需求我刚好在项目里处理过!针对远程节点运行Shell脚本的Stage超时后不中断后续流程的场景,咱们可以用Jenkins Pipeline的timeout步骤结合异常捕获来实现,具体语法和思路如下:

核心思路

用timeout给远程执行的脚本设置超时阈值,当超时发生时,捕获对应的TimeoutException,执行自定义的等待逻辑后,让Pipeline继续推进到后续Stage,完全不会终止整个流程。

完整代码示例

pipeline {
    agent any
    stages {
        stage('远程执行Shell脚本') {
            steps {
                script {
                    try {
                        // 设定超时时间:这里是10分钟,可根据实际需求调整
                        timeout(time: 10, unit: 'MINUTES') {
                            // 方式1:用SSH Pipeline Steps插件的sshCommand执行远程脚本
                            sshCommand(
                                remote: yourRemoteNodeConfig, // 替换为你的远程节点配置对象
                                command: '/path/to/your/target/script.sh'
                            )

                            // 方式2:如果用SSH Agent插件,也可以直接用sh命令远程执行
                            // sh 'ssh -i /path/to/private-key user@remote-host "/path/to/your/target/script.sh"'
                        }
                    } catch (TimeoutException e) {
                        echo "⚠️ 远程脚本执行超时啦!"
                        // 等待指定时长:这里是5分钟,按需调整
                        sleep(time: 5, unit: 'MINUTES')
                        echo "等待完成,继续执行后续Stage~"
                    }
                }
            }
        }
        stage('后续业务Stage') {
            steps {
                echo "这是后续的Stage,正在正常执行..."
            }
        }
    }
}

关键细节说明

  • timeout步骤:指定超时的时间和单位(支持SECONDS、MINUTES、HOURS等),超过设定时间会自动抛出TimeoutException
  • 异常捕获:通过try-catch块捕获超时异常,避免整个Pipeline因超时失败,转而进入自定义处理逻辑
  • 等待逻辑:在catch块中用sleep步骤实现等待,时间可以根据你的业务需求灵活调整;如果不需要等待,直接输出日志后跳过即可
  • 远程执行方式:两种常用方式可选,需要确保Jenkins安装了对应插件(SSH Pipeline Steps或SSH Agent)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:27:27