Jenkins 将任何非零退出代码视为错误

fhc*_*cat 3 jenkins jenkins-pipeline

这是一个问题,因为我们有一个可执行文件返回 2 作为警告。我们不想因为这个而导致 Jenkins 构建管道失败。我们如何修改管道以接受退出代码2,并根据退出代码打印出合理的警告消息?

D:\Stage>c:\bin\mycommand
script returned exit code 2
Run Code Online (Sandbox Code Playgroud)

Noa*_*mer 5

当您运行shbat在 Jenkins 管道中运行时,对于任何非零退出代码,它总是会导致构建失败(并引发异常),并且无法更改。
您可以做的是使用sh 步骤returnStatus(或 cmd),它将返回脚本的退出代码而不是使构建失败,然后您可以使用类似以下内容的内容:

pipeline {
    agent any
    stages {
        stage('Run Script') {
            steps {
                script {
                    def exitCode = sh script: 'mycommand', returnStatus: true
                    if (exitCode == 2) {
                        // do something
                    }
                    else if (exitCode){
                        // other non-zero exit codes
                    }
                    else {
                        // exit code 0
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法的唯一缺点是returnStatus不能与 一起使用returnStdout,因此如果您需要获取返回的输出,则需要以其他方式获取它(例如写入文件然后读取它)。