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 -e
ve echo 0
komutları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 -e
ve echo 0
in ifadesi && gmake test && set -e && echo 0
atlanacak println run_tests
, çünkü başarısızlık gmake test
jenkins 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.