Jenkinsfile - 捕获错误时停止管道

Jenkinsfile - stop pipeline when catch error

我在 Jenkins 中的流水线有问题。

我对具有指定扩展名的文件执行路径搜索。然后我用之前找到的文件执行 php -l 。 一切正常,但我想如果 php -l 发现错误然后构建并进入 UNSTABLE 状态并停止进一步执行管道。 我设法以这种方式做到了,但随后构建和步骤处于失败状态

} catch (Exception e) {
            error("${e}")

我的管道的部分代码。

def check(){
    stage('Validate files') {
        try {
            sh "find . -type f -iregex '.*\.\(php\)' | xargs -I % sh -c 'php -l \'%\''" 
        } catch (Exception e) {
            error("${e}")
        }
    }
}

我希望更聪明的人可以指导我找到解决方案:)

有一个示例可以工作,但可能不是您想要的。我使用 unstable() 来标记阶段/构建,然后检查 sh 步骤的退出代码到 return 或继续管道。

有 2 个条件,因为您需要 return 离开舞台而不只是 return 离开舞台。

#!/usr/bin/env groovy

try {
    node {
        def exitCode = 0
        exitCode = check()
        if (exitCode != 0){
            return
        }
        somethingelse()
    }
} catch (Throwable err) { // catch all exceptions
        throw err
} finally {}

def check(){
    stage('Validate files') {
            exitCode = sh script:"exit 1", returnStatus:true
            if (exitCode !=0){
                unstable('message')
            }
        }
    return exitCode
}

def somethingelse(){
    stage('Something'){
            echo "somethingelse"
    }
}