Статус работы Дженкинса - УСПЕХ, но Ansible playbook не работает - PullRequest
0 голосов
/ 14 января 2019

Я выполняю ANSIBLE PlayBook из скриптового конвейера Jenkins, и мне нужна помощь в получении статуса ANSI (успешно / не удалось).

sh "ansible-playbook -i <args>"

PLAY RECAP ********************************************* ************************

имя_сервера: ok = 4 изменено = 0 недоступно = 0 не удалось = 1

[Трубопровод] Конец трубопровода

Закончено: УСПЕХ

В приведенном выше примере у меня 1 сбой, но статус задания Дженкинса - УСПЕХ. Как я могу изменить статус задания Jenkins на FAIL, если в playbook есть хотя бы 1 сбой?

1 Ответ

0 голосов
/ 14 января 2019

sh "ansible-playbook -i <args>"

Я бы предположил, что для блока оболочки не установлено значение set -e, и поэтому, как и большинство сценариев оболочки, он не считает неудачную команду неудачной для всего сценария. Тяжелый антипаттерн, ИМХО, но большинство сценариев, которые я видел, легко встречаются

Итак, я полагаю, sh "set -e; ansible-playbook -i ..." исправит это, или (теоретически) вы можете использовать exec, поскольку это единственная команда, которая присутствует, и, следовательно, сбой ansible-playbook равен . отказ этой оболочки: sh "exec ansible-playbook -i ..."

...