Jenkins executa comandos de valor de retorno do shell vs arquivo

1

Eu estava usando a função Execute shell no Jenkins com um conjunto diferente de comandos (chamando o aplicativo newman testing). Quando um dos casos de teste estava falhando em newman , minha compilação foi marcada como uma falha.

Anterior 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

Como movi todos esses comandos para um arquivo de script e usei "Execute shell" para executar esse arquivo de script (que é uma cópia dos comandos anteriormente diretamente no "Execute shell", minha compilação não está marcada como falha mais quando um dos casos de teste newman falhar.

Novo Execute shell :

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

Conteúdo de 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

Alguma razão pela qual o valor de retorno dos comandos ( newman ) não está acionando uma falha jenkins quando eu estou usando-os através de um arquivo?

    
por abd 15.08.2017 / 22:58

1 resposta

1

Você precisa definir o ambiente do shell para sair quando um teste falhar set -e

-e When this option is on, when any command fails (for any of the reasons listed in Consequences of Shell Errors or by returning an exit status greater than zero), the shell immediately shall exit, as if by executing the exit special built-in utility with no arguments, with the following exceptions: The failure of any individual command in a multi-command pipeline shall not cause the shell to exit. Only the failure of the pipeline itself shall be considered.

The -e setting shall be ignored when executing the compound list following the while, until, if, or elif reserved word, a pipeline beginning with the ! reserved word, or any command of an AND-OR list other than the last.

If the exit status of a compound command other than a subshell command was the result of a failure while -e was being ignored, then -e shall not apply to this command.

Você pode encontrar mais informações sobre as opções do bash em definir ou desmarcar opções e parâmetros posicionais

Então, seu script bash deve se tornar

#!/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
    
por 16.08.2017 / 09:10