2017-08-16 7 views
0

を出ることができない、ジェンキンスさんがビルドするシェルスクリプトを実行... スクリプト:ドッキングウィンドウの実行bashスクリプトは、私のCIシステムで

docker run -d --rm -v /code-path:/tmp docker-iamge-name sh -c " \ 
    cd /tmp ;\ 
    mkdir build ;\ 
    cd build ;\ 
    cmake ../ ;\ 
    make ;\ 
    ./unit-test-execute-file1 ;\ 
    ... 
" 

しかし、エラーがコードファイルに存在する場合には、コマンドが終了を行い、次のコマンド(./ unit-test-execute-file1)が実行されます。 makeが失敗したため、unit-test-execute-fileは生成されず、次のコマンドも失敗します...最後にコード0のスクリプトが終了し、Jenkinsはビルドが成功したことを示します..

誰かが助けることができますか?どうもありがとう!

答えて

1

bashスクリプトの最初の行に、set -eを使用して、スクリプトが失敗した時点でそのスクリプトを終了させる必要があります。

あなたの実行文は次のようになります。

docker run -d --rm -v /code-path:/tmp docker-iamge-name sh -c " \ 
    set -e ;\ 
    cd /tmp ;\ 
    mkdir build ;\ 
    cd build ;\ 
    cmake ../ ;\ 
    make ;\ 
    ./unit-test-execute-file1 ;\ 
    ... 
" 
0

のではなく、少なくともではない完全にははない終了SHELを行うことをすべての例外を理解せず、本当にない信頼性がある(set -eに依存しています)、実行するコマンドを明示してください。この場合、単にコマンドを&&と一緒にチェーンすることができます。これにより、前のコマンドが成功した場合にのみ各コマンドが実行されます。チェーンの終了ステータスは、最後に実行するコマンドの終了ステータスです(たとえば、cd buildが失敗した場合、終了ステータスはsh -cの終了ステータスです)。

docker run -d --rm -v /code-path:/tmp docker-iamge-name sh -c " 
    cd /tmp && 
    mkdir build && 
    cd build && 
    cmake ../ && 
    make && 
    ./unit-test-execute-file1 && 
    ... 
" 
関連する問題