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
相关产品推荐
相关产品推荐

