詹金斯管道如果条件不工作
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()
我有一个 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()