仅为一组阶段设置 Jenkins 管道超时

Shr*_*aid 1 jenkins jenkins-pipeline

我知道可以使用 为整个管道脚本或特定阶段options设置超时,但是有没有办法为一组阶段设置超时?例如,只有 5 个阶段中的 3 个阶段总共有 10 分钟的超时(不是每个阶段 10 分钟),而让其他 2 个阶段自由运行。

zet*_*t42 5

当然,您可以创建嵌套阶段并定义timeout父阶段的选项:

pipeline {
    agent any
    stages{
        stage('Stage A') {
            options{
                timeout( time: 10, unit: 'SECONDS' )
            }
            stages {
                stage('Stage A1') {
                    steps { 
                        sleep( time: 4, unit: 'SECONDS' )
                    }
                }
                stage('Stage A2') {
                    steps { 
                        sleep( time: 4, unit: 'SECONDS' )
                    }
                }
                stage('Stage A3') {
                    steps { 
                        sleep( time: 4, unit: 'SECONDS' )
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于父级超时,阶段 A3 将永远不会执行。它将被标记为“中止”:

詹金斯管道