อีกหนึ่งคำตอบพร้อมเคล็ดลับอาจเป็นประโยชน์สำหรับใครบางคน:
อย่าลืมแยกคำสั่งของคุณด้วยกฎต่อไปนี้ :
command1 && command2 - หมายถึง command2 นั้นจะถูกเรียกใช้งานก็ต่อเมื่อ command1 สำเร็จ
command1 ; command2 - หมายถึงคำสั่ง 2 นั้นจะถูกเรียกใช้งานแม้จะเป็นผลลัพธ์ของ command1 ก็ตาม
ตัวอย่างเช่น:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test ;set -e;echo 0 ", returnStdout: true).trim()
println run_tests
จะดำเนินการสำเร็จด้วยset -e
และecho 0
คำสั่งหากgmake test
ล้มเหลว (การทดสอบของคุณล้มเหลว) ในขณะที่โค้ดต่อไปนี้ถูกตัดออก:
String run_tests = sh(script: "set +e && cd ~/development/tests/ && gmake test && set -e && echo 0 ", returnStdout: true).trim()
println run_tests
ผิดเล็กน้อยและคำสั่งset -e
และecho 0
ใน&& gmake test && set -e && echo 0
จะถูกข้ามไปพร้อมกับprintln run_tests
คำสั่งเนื่องจากความล้มเหลวgmake test
จะยกเลิกการสร้างเจนกินส์ เป็นวิธีแก้ปัญหาชั่วคราวคุณสามารถเปลี่ยนไปใช้returnStatus:true
แต่คุณจะพลาดผลลัพธ์จากคำสั่งของคุณ