ฉันพยายามใช้ Jenkins เพื่อสร้างโครงการ C ++ ในคอนเทนเนอร์ Docker ฉันไม่มีปัญหาในการสร้างเจนกินส์หรือสร้างในภาชนะนอกเจนกินส์
ด้านล่างเป็นสิ่งที่ฉันพยายาม ฉันกำลังข้ามการทำแผนที่ปริมาณเพื่อความชัดเจน
กรณีที่ 1
คำสั่งต่อไปนี้รันบิลด์ในเชลล์ได้สำเร็จ
docker run --rm --interactive=true --tty=true $IMAGE make
อย่างไรก็ตามเมื่อทำงานใน Jenkins เป็นขั้นตอน "execute shell" Docker จะส่งคืนข้อผิดพลาดต่อไปนี้
cannot enable tty mode on non tty input
กรณีที่ 2
คำสั่งต่อไปนี้คล้ายกับคำสั่งก่อนหน้า แต่ปิดใช้งานการโต้ตอบ
docker run --rm $IMAGE make
เจนกินส์สามารถเรียกใช้งานบิลด์ได้สำเร็จ อย่างไรก็ตามมีปัญหาร้ายแรงเมื่อยกเลิกการสร้าง บิลด์จะถูกทำเครื่องหมายทันทีว่าถูกยกเลิก แต่คอนเทนเนอร์ยังคงทำงานอยู่จนกว่าบิลด์จะเสร็จสิ้น นอกจากนี้ภาชนะจะไม่ถูกลบออกหลังจากออกจาก
เมื่อรันในเชลล์คำสั่งจะสร้างสำเร็จ แต่ไม่สามารถขัดจังหวะได้ นอกจากนี้ภาชนะจะถูกลบออกหลังจากออกจาก
คำถาม
มีใครบ้างที่รู้วิธีการรัน builds อย่างสมบูรณ์ในคอนเทนเนอร์ Docker จาก Jenkins และรักษาความสามารถในการยกเลิก builds
การใช้ปลั๊กอิน Jenkins ใด ๆ ไม่ใช่ตัวเลือกเนื่องจากการโทรผ่าน Docker อยู่ในสคริปต์และไม่สามารถแตกออกได้ง่าย