Команда Jenkins Pipeline waitUntil возвращает определенную строку - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть этап конвейера, на котором я жду, чтобы получить определенную строку из сценария sh, и только при совпадении строк перейдите к следующему этапу, однако он не будет работать должным образом:

node('master') {
    stage("wait for bash completion") {
        waitUntil {
            def output = sh returnStdout: true, script: 'cat /tmp/test.txt'
            output == "hello"
        }
    }
    stage("execute after bash completed") {
        echo "the file says hello!!!"
    }
}

Исполнение примерно такое:

+ cat /tmp/test.txt
[Pipeline] }
Will try again after 0.25 sec
[Pipeline] {
[Pipeline] sh
[workspace] Running shell script
+ cat /tmp/test.txt
[Pipeline] }
Will try again after 0.3 sec
[Pipeline] {
[Pipeline] sh
[workspace] Running shell script
+ cat /tmp/test.txt
[Pipeline] }
Will try again after 0.36 sec
...
(so on and so forth)

Чего мне не хватает?

1 Ответ

0 голосов
/ 31 декабря 2018

Из справки waitUntil:

Повторно запускает свое тело, пока не вернет true.Если он возвращает false, некоторое время ждет и пытается снова.-

Ваш результат выполнения выглядит точно так же, как и ожидание совпадения output == "hello".Может быть, содержимое файла /tmp/test.txt не совсем hello.Возможно, в нем есть пробелы, например, новая строка в качестве последнего символа.

...