Если заявление в Jenkinsfile, сравнение строк не работает - PullRequest
1 голос
/ 09 июня 2019

Я пытаюсь добавить этап проверки в Jenkinsfile, основываясь на дне недели.Если сегодня воскресенье, требуется проверка, в противном случае - нет.

оператор if не работает

здесь я объявляю переменную

DAY=sh(returnStdout: true, script: 'date +"%a"').trim()

и вот этап

stage('validation') {
  steps {
    script {
      if ( DAY == "SUN" ) {
        echo "Validation is required, today is $DAY"
      }
      else {
        echo "No validation required, today is $DAY"
      }
    }
  }
}

и здесь вывод

No validation required, today is Sun

значение переменной Day правильное, но оператор if не работает правильно

заранее спасибо

Ответы [ 2 ]

1 голос
/ 09 июня 2019

Похоже, что сравнение не удается, потому что регистр слова в ДЕНЬ отличается.Попробуйте это

      if ( DAY == "Sun" ) {
        echo "Validation is required, today is $DAY"
      }
      else {
        echo "No validation required, today is $DAY"
      }
0 голосов
/ 09 июня 2019

Другой подход, чтобы быть уверенным в том, что вы сравниваете, - это, по крайней мере, преобразовать результат в упражнение.Таким образом, ваш тест будет работать без изменений.

И обязательно форсировать вывод на английский для date +"%a"
(на моей французской установке я получаю "dim.",не "Sun")

DAY=sh(returnStdout: true, script: 'LANG=en_us_88591 date +"%a"').trim().toUpperCase().replaceAll('.','')

Таким образом, ваш Jenkinsfile будет работать на любой рабочей станции, независимо от ее локали .

...