Jenkins Pipeline-if语句始终返回false

时间:2019-02-28 12:22:45

标签: if-statement jenkins jenkins-pipeline

我目前有问题。我正在使用openshift,并尝试使用if语句,具体取决于成功在单独容器中进行的集成测试。这是我的代码的一个片段

podTemplate(....

){
  node(myLabel){
    container('jnlp'){
      ...
      stage(Integration Tests){
        ...
         script{
          def status = sh(script: 'oc describe pod myapps-integration-tests | grep -i status: | awk {\'print $2\'}', returnStdout: true)
          echo "Status of Interation Test Job ${status}"
          echo status
          if("${status}" == "Succeeded"){             
            echo "Integration tests successfull"  
          } else {              
            echo "Integration Tests failed"
            error("The integration tests failed.")              
          }
        }
        ...
}

现在的问题是,这个if语句总是总是返回false。状态回显为成功,但该语句仍返回false。我尝试了有无脚本块。我尝试过

if(status == "Succeeded")

但还是。它总是告诉我我的集成测试失败。如果我将语句替换为“ Succeeded” ==“ Succeeded”仅用于测试,则它按预期通过。有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试过修剪输出?它可能包含空格/换行符:

if (status.trim() == "Succeeded")

您可能会尝试的其他解决方案:

if (status.contains("Succeeded"))