詹金斯管道如果条件不工作

Jenkins pipeline if condition not working

我有一个 Jenkins 管道,它使用 if 语句来检查 docker 容器是否 运行ning。我运行下面的命令得到运行ning状态:

def containerStatus = sh(script: "ssh -o StrictHostKeyChecking=no -l <user> <server> 'docker container inspect -f '{{.State.Status}}' ${tagName}'", returnStdout: true)

我已经添加了

echo containerStatus

并且在 Jenkins 控制台中,此输出为“运行ning”

但是,当我在管道中有以下内容时:

if(containerStatus.toString() == 'running'){
    echo 'Initial status: Container running'
    ...some code...
}

这个条件没有执行(我遇到了我定义的错误条件)。我也试过删除 .toString(),但没有成功。

管道中的完整阶段是:

stage("Container") {
    steps {
        script{
            def containerStatus = sh(script: "ssh -o StrictHostKeyChecking=no -l <user> <server> 'docker container inspect -f '{{.State.Status}}' ${tagName}'", returnStdout: true)
            echo containerStatus
            
            if(containerStatus.toString() == 'running'){
                echo 'Initial status: Container running'
                ...some code...
            }
            else {
                error "Container not running"
            }           
        }
    }
}

您需要trim结果输出:

def containerStatus = sh(script: "ssh -o StrictHostKeyChecking=no -l <user> <server> 'docker container inspect -f '{{.State.Status}}' ${tagName}'", returnStdout: true).trim()