ตอนนี้ตัวแทน Jenkins ของเราสร้าง docker-compose.yml สำหรับแต่ละโปรเจ็กต์ Rails ของเราแล้วเรียกใช้ docker-compose docker-compose.yml มีคอนเทนเนอร์ "เว็บ" หลักที่มี rbenv และการอ้างอิง Rails อื่น ๆ ทั้งหมดของเราภายใน เชื่อมโยงกับคอนเทนเนอร์ DB ที่มี Postgres DB ทดสอบ
ปัญหาเกิดขึ้นเมื่อเราต้องเรียกใช้การทดสอบและสร้างรหัสทางออก เซิร์ฟเวอร์ CI ของเราจะปรับใช้ก็ต่อเมื่อสคริปต์ทดสอบส่งคืน exit 0 แต่ docker-compose จะคืนค่า 0 เสมอแม้ว่าคำสั่งคอนเทนเนอร์ใดคำสั่งหนึ่งจะล้มเหลวก็ตาม
ปัญหาอื่น ๆ คือคอนเทนเนอร์ DB ทำงานไปเรื่อย ๆ แม้ว่าเว็บคอนเทนเนอร์จะเรียกใช้การทดสอบเสร็จแล้วก็ตามดังนั้นdocker-compose up
อย่าส่งคืน
มีวิธีใดบ้างที่เราสามารถใช้นักเทียบท่าเขียนสำหรับกระบวนการนี้ เราจะต้องสามารถเรียกใช้คอนเทนเนอร์ได้ แต่ออกหลังจากที่เว็บคอนเทนเนอร์เสร็จสมบูรณ์และส่งคืนรหัสทางออก ตอนนี้เราติดอยู่ด้วยตนเองโดยใช้นักเทียบท่าเพื่อหมุนคอนเทนเนอร์ DB และเรียกใช้คอนเทนเนอร์เว็บด้วยตัวเลือก --link
docker-compose
1.12.0 ขึ้นไป บางทีมันอาจจะเป็นกรณีของคุณด้วย ตัวอย่างอาจเป็น:docker-compose up --exit-code-from test-unit
. โปรดทราบว่ามันไม่ได้ผลสำหรับฉันจนกว่าฉันจะเพิ่มset -e
ที่ตอนต้นของสคริปต์ของฉัน