อันดับแรกวางเมาส์เหนือพื้นที่สีเทาด้านล่าง ไม่ใช่ส่วนหนึ่งของคำตอบ แต่ต้องพูดอย่างแน่นอน:
หากคุณมีเชลล์สคริปต์ที่ "ชำระเงินสร้างปรับใช้" ทั้งหมดด้วยตัวเองทำไมคุณถึงใช้เจนกินส์ คุณกำลังกล่าวถึงคุณสมบัติทั้งหมดของ Jenkins ที่ทำให้มันเป็นอย่างนั้น คุณอาจมี cron หรือ SVN post -mit hook เรียกสคริปต์โดยตรง. Jenkins ดำเนินการชำระเงิน SVN ด้วยตัวเองเป็นสิ่งสำคัญ ช่วยให้การสร้างจะถูกทริกเกอร์เฉพาะเมื่อมีการเปลี่ยนแปลง (หรือบนตัวจับเวลาหรือด้วยตนเองหากคุณต้องการ) ติดตามการเปลี่ยนแปลงระหว่างการสร้าง จะแสดงการเปลี่ยนแปลงเหล่านั้นเพื่อให้คุณสามารถดูได้ว่าบิวด์ใดเป็นชุดของการเปลี่ยนแปลงใด อีเมลจะคอมมิตเมื่อการเปลี่ยนแปลงทำให้การสร้างสำเร็จหรือล้มเหลว (อีกครั้งตามที่กำหนดค่าตามที่คุณต้องการ) จะส่งอีเมลคอมมิตเมื่อการแก้ไขของพวกเขาแก้ไขบิลด์ที่ล้มเหลว และมากขึ้นเรื่อย ๆ Jenkins การเก็บถาวรสิ่งประดิษฐ์ยังทำให้พร้อมใช้งานต่อสร้างตรงจาก Jenkins แม้ว่าจะไม่สำคัญเท่ากับการชำระเงิน SVN แต่นี่เป็นอีกครั้งที่เป็นส่วนสำคัญของสิ่งที่ทำให้เจนกินส์ เช่นเดียวกันกับการปรับใช้ การปรับใช้มักจะเกิดขึ้นกับหลายสภาพแวดล้อมเว้นแต่คุณจะมีสภาพแวดล้อมเดียว Jenkins สามารถติดตามสภาพแวดล้อมที่มีการใช้งานบิลด์เฉพาะ (พร้อมชุดการเปลี่ยนแปลง SVN เฉพาะ) ผ่านการใช้โปรโมชั่น คุณอยู่ข้างหน้าทั้งหมดนี้ ดูเหมือนว่าคุณจะถูกบอกว่า "คุณต้องใช้เจนกินส์" แต่คุณไม่ต้องการจริงๆและคุณกำลังทำเพียงเพื่อให้ผู้บังคับบัญชาของคุณหายไปเพียงแค่ใส่เครื่องหมายถูก "ใช่ฉันใช้เจนกินส์"
คำตอบสั้น ๆ คือ: รหัสออกของคำสั่งสุดท้ายของขั้นตอนการสร้างExecute Shellของ Jenkin คือสิ่งที่กำหนดความสำเร็จ / ล้มเหลวของขั้นตอนการสร้างสร้างขั้นตอน0
- ความสำเร็จanything else
- ความล้มเหลว หมายเหตุนี้จะกำหนดความสำเร็จ / ล้มเหลวของการสร้างขั้นตอนที่ไม่ได้ทั้งวิ่งงาน ความสำเร็จ / ล้มเหลวของการรันงานทั้งหมดอาจได้รับผลกระทบจากขั้นตอนการสร้างหลายขั้นตอนและการดำเนินการหลังการสร้างและปลั๊กอิน
คุณได้กล่าวไว้Build step 'Execute shell' marked build as failure
ดังนั้นเราจะมุ่งเน้นไปที่ขั้นตอนการสร้างเพียงขั้นตอนเดียว หากขั้นตอนการสร้างเชลล์ Executeของคุณมีเพียงบรรทัดเดียวที่เรียกเชลล์สคริปต์ของคุณโค้ดออกของเชลล์สคริปต์ของคุณจะกำหนดความสำเร็จ / ล้มเหลวของขั้นตอนการสร้าง หากคุณมีบรรทัดมากกว่านี้หลังจากการเรียกใช้เชลล์สคริปต์ของคุณให้ตรวจสอบอย่างรอบคอบเนื่องจากเป็นบรรทัดที่อาจทำให้เกิดความล้มเหลว
สุดท้ายอ่านที่นี่Jenkins Build Script ออกหลังจากการดำเนินการทดสอบของ Googleเจนกินส์รูปร่างออกสคริปต์หลังจากที่การกระทำของไม่เกี่ยวข้องโดยตรงกับคำถามของคุณ แต่โปรดทราบว่าส่วนที่เกี่ยวกับเจนกินส์เปิดตัวขั้นตอนการสร้างExecute Shellเป็นเชลล์สคริปต์ที่มี/bin/sh -xe
-e
หมายความว่าเชลล์สคริปต์จะออกกับความล้มเหลวแม้เพียง 1 คำสั่งล้มเหลวแม้ถ้าคุณทำการตรวจสอบข้อผิดพลาดสำหรับคำสั่งที่ (เพราะออกจากสคริปต์ก่อนที่มันจะได้รับการตรวจสอบข้อผิดพลาดของคุณ) สิ่งนี้ตรงกันข้ามกับการดำเนินการตามปกติของเชลล์สคริปต์ซึ่งโดยปกติจะพิมพ์ข้อความแสดงข้อผิดพลาดสำหรับคำสั่งที่ล้มเหลว (หรือเปลี่ยนเส้นทางไปเป็นโมฆะและจัดการโดยวิธีอื่น) และดำเนินการต่อ
หากต้องการหลีกเลี่ยงสิ่งนี้ให้เพิ่มset +e
ที่ด้านบนของเชลล์สคริปต์ของคุณ
เนื่องจากคุณบอกว่าสคริปต์ของคุณทำทุกอย่างที่ควรทำโอกาสที่คำสั่งจะล้มเหลวจะอยู่ที่ส่วนท้ายของสคริปต์ อาจจะเป็นเสียงสะท้อนสุดท้าย? หรือสำเนาสิ่งประดิษฐ์ที่ไหนสักแห่ง? หากไม่เห็นเอาต์พุตคอนโซลแบบเต็มเราก็แค่คาดเดา
โปรดโพสต์เอาต์พุตคอนโซลของการรันงานและโดยเฉพาะอย่างยิ่งเชลล์สคริปต์เองด้วยจากนั้นเราจะบอกคุณได้ว่าบรรทัดใดล้มเหลว