Я использовал Execute shell
в Jenkins с другим набором команд (вызов newman
приложение для тестирования). Когда один из тестовых примеров не прошел newman
, моя сборка была отмечена как неудачная.
Предыдущий 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
Так как я переместил все эти команды в файл сценария и использовал «Выполнить оболочку» для выполнения этого файла сценария (которые являются копией команд, которые ранее были непосредственно в «Выполнить оболочку», моя сборка больше не помечается как сбой, когда один из тестов Newman не работает.
Новый Execute shell
:
chmod +x ./docs/ci_tests.sh
./docs/ci_tests.sh
Содержание 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
Любая причина, по которой возвращаемое значение команд (newman
) не вызывают сбой Дженкинса, когда я использую их через файл?
Вы должны настроить среду оболочки для выхода, когда тест не удался set -e
-e Когда эта опция включена, при сбое любой команды (по любой из причин, перечисленных в разделе «Последствия ошибок оболочки» или в результате возврата статуса выхода больше нуля) оболочка немедленно завершает работу, как если бы выполнялась специальная встроенная функция выхода. в утилите без аргументов, со следующими исключениями: сбой любой отдельной команды в многокомандном конвейере не должен вызывать выход из оболочки. Учитывается только отказ самого трубопровода.
Параметр -e должен игнорироваться при выполнении составного списка после while, пока, if или зарезервированное слово elif, конвейер, начинающийся с! зарезервированное слово или любая команда из списка И-ИЛИ, кроме последней.
Если статус выхода составной команды, отличной от команды подоболочки, был результатом сбоя при игнорировании -e, то -e не применяется к этой команде.
Вы можете найти больше информации о параметрах bash на set - установить или отключить параметры и позиционные параметры
Итак, ваш сценарий 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