groovy Jenkins管道:如何捕捉阶段x中的错误,但跳过下一阶段(y),但仍运行最后一个阶段(z)?

1yjd4xko  于 2022-12-11  发布在  Jenkins
关注(0)|答案(1)|浏览(174)

在宣告式管缐中,我知道我可以尝试/拦截阶段中的错误,并执行管缐的剩馀阶段。但是如果我想要在失败时略过所有后续阶段,除了最后一个阶段-我想要执行的阶段,该怎麽办!

script {
  try {
      sh 'do your stuff'
  } catch (Exception e) {
      echo 'Exception occurred: ' + e.toString()
hmtdttj4

hmtdttj41#

你可以使用when表达式来实现这个。

def skipStages = false

pipeline {
    agent any
    stages {
        
        stage('1') {
            steps {
                script {
                    echo 'Hello 1'
                        try {
                            error "Something"
                        } catch(e) {
                            skipStages = true
                        }
                    }
                    
                }
            }
        stage('2') {
            when { expression { !skipStages } }
            steps {
                script {
                    echo 'Hello 222222'
                }
                    
            }
        }
        stage('3') {
            when { expression { !skipStages } }
            steps {
                script {
                    echo 'Hello 3333'
                }
                    
            }
        }
        stage('Last') {
            steps {
                script {
                    echo 'Hello Last'
                }
                    
            }
        }
    }
}

相关问题