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

Jenkins Pipeline中retry内是否启用timeout?技术咨询

Jenkins Pipeline中retry与timeout嵌套的生效问题

结论

当前你的timeout并未在retry中启用,核心问题在于两者的嵌套顺序配置错误。

两种嵌套场景的差异说明

场景1:timeout包裹retry(你当前的配置)

这种写法下,整个retry块共享同一个10分钟的超时窗口,两次尝试的总耗时不能超过10分钟。代码示例:

stage('Build') {
    steps {
        timeout(time: 10, unit: 'MINUTES') {
            retry(2) {
                // 你的构建逻辑
                sh 'your-build-command'
            }
        }
    }
}

这就导致了你遇到的现象:第一次执行超时触发重试,但重试过程不会重新启动超时计时,而是沿用全局超时窗口的剩余时间,因此不会触发新的timeout。

场景2:retry包裹timeout(实现重试时每次触发独立timeout)

如果需要每次重试都单独应用10分钟超时限制,必须将timeout嵌套在retry内部。这样每次重试都会重新初始化一个10分钟的超时计时器,每一次尝试都受独立的超时规则约束。代码示例:

stage('Build') {
    steps {
        retry(2) {
            timeout(time: 10, unit: 'MINUTES') {
                // 你的构建逻辑
                sh 'your-build-command'
            }
        }
    }
}

此时每次重试过程中,只要耗时超过10分钟,就会触发timeout中断当前尝试,再进入下一次重试(如果还有剩余重试次数)。


内容的提问来源于stack exchange,提问作者RAJARAJESHWARIE .K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:27:04