Jenkins execute shell return value commands vs file

I was using the Execute shell function in Jenkins with a different set of commands (calling the newman testing application). When one of the test cases was failing through newman, my build was marked as a failure.

Previous Execute shell

newman run ./test/postman_collection_1.json --environment ./test/postman_environment.json --bail
newman run ./test/postman_collection_2.json --environment ./test/postman_environment.json --bail

Since I move moved all these commands to a script file, and used "Execute shell" to execute this script file (which are a copy of the commands previously directly in the "Execute shell", my build is not marked as a failure anymore when one of the newman test cases fails.

New Execute shell:

chmod +x ./docs/ci_tests.sh
./docs/ci_tests.sh

Content of ci_tests.sh:

#!/bin/bash
newman run ./test/postman_collection_1.json --environment ./test/postman_environment.json --bail
newman run ./test/postman_collection_2.json --environment ./test/postman_environment.json --bail

Any reason why the return value of the commands (newman) are not triggering a jenkins fail when I am using them through a file?

1
задан 15 August 2017 в 23:58
1 ответ

Вы должны настроить среду оболочки так, чтобы она выходила из-за сбоя теста set -e

-e Когда эта опция включена, при сбое какой-либо команды (по любой из причин, перечисленных в разделе «Последствия ошибок оболочки» или при возврате статуса выхода больше нуля) оболочка немедленно завершает работу, как если бы выполнялась специальная встроенная утилита выхода. без аргументов, за следующими исключениями: Отказ любой отдельной команды в многокомандном конвейере не должен вызывать завершение работы оболочки. Учитывается только отказ самого конвейера.

Параметр -e должен игнорироваться при выполнении составного списка, следующего за while, до тех пор, пока, if или зарезервированное слово elif, конвейер, начинающийся с! зарезервированное слово или любая команда из списка И-ИЛИ, кроме последней.

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

Вы можете найти дополнительную информацию о параметрах bash в установить - установить или отключить параметры и позиционные параметры

Таким образом, ваш сценарий bash должен стать

#!/bin/bash
set -e 
newman run ./test/postman_collection_1.json --environment     ./test/postman_environment.json --bail
newman run ./test/postman_collection_2.json --environment ./test/postman_environment.json --bail
1
ответ дан 3 December 2019 в 23:26

Теги

Похожие вопросы