Jenkinsfile - 捕获错误时停止管道

问题描述 投票:0回答:1

我的 Jenkins 管道出现问题。

我对具有指定扩展名的文件执行路径搜索。然后我使用之前找到的文件执行 php -l 。 一切正常,但我希望如果 php -l 发现错误,那么构建和步骤将进入不稳定状态,并且管道的进一步执行将停止。 我设法这样做,但随后构建和步骤处于失败状态

} 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}")
        }
    }
}

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

jenkins groovy jenkins-pipeline jenkins-groovy
1个回答
0
投票

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

有2个如果,因为你需要返回到舞台之外,而不仅仅是从舞台返回。

#!/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"
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.