Bazı ipuçlarını içeren başka bir cevap, biri için yararlı olabilir:
Komutlarınızı aşağıdaki kuralla ayırmayı unutmayın :
command1 && command2 - sadece command1 başarılı olursa command2'nin çalıştırılacağı anlamına gelir
command1 ; command2 - komut 1'in sonucuna rağmen komut 2'nin yürütüleceği anlamına gelir
Örneğin:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test ;set -e;echo 0 ", returnStdout: true).trim()
println run_tests
aşağıdaki kod alınırken başarısız olursa (testleriniz başarısız oldu) set -eve echo 0komutlarıyla başarıyla yürütülecektir gmake test:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test && set -e && echo 0 ", returnStdout: true).trim()
println run_tests
biraz yanlış ve komutlar set -eve echo 0in ifadesi && gmake test && set -e && echo 0atlanacak println run_tests, çünkü başarısızlık gmake testjenkins yapısını iptal edecektir. Geçici çözüm olarak returnStatus:trueöğesine geçebilirsiniz , ancak daha sonra komutunuzun çıktısını kaçıracaksınız.