首页 > 解决方案 > Jenkins Pipeline - if 语句总是返回 false

问题描述

我目前有一个问题。我正在使用 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。status 回显为 Succeeded,但该语句仍然返回 false。我尝试过使用和不使用脚本块。我试过了

if(status == "Succeeded")

但仍然。它总是告诉我我的集成测试失败了。如果我用“Succeeded”==“Succeeded”替换语句只是为了测试它按预期通过。有谁知道我做错了什么?

标签: if-statementjenkinsjenkins-pipeline

解决方案


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

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

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

if (status.contains("Succeeded"))

推荐阅读