Назад | Перейти на главную страницу

Дженкинс выполняет команды возвращаемого значения оболочки против файла

Я использовал 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