Jenkins Pipeline - оператор if всегда возвращает false - PullRequest
0 голосов
/ 28 февраля 2019

У меня сейчас проблема.Я работаю с 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.Эхо-статус отображается как Успешный, но оператор все еще возвращает ложь.Я пробовал с и без блока сценария.Я пытался

if(status == "Succeeded")

но все же.Это всегда говорит мне, что мой тест на интеграцию не удался.Если я заменю утверждение на «Succeeded» == «Succeeded» только для тестирования, оно проходит, как и ожидалось.У кого-нибудь есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 28 февраля 2019

Вы пробовали обрезать вывод?Может содержать пробелы / новые строки:

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

Другое решение, которое вы можете попробовать:

if (status.contains("Succeeded"))
...