เรากำลังพยายามใช้ไปป์ไลน์การผสานรวมอย่างต่อเนื่องในสภาพแวดล้อมของเรา เรามีบริการต่างๆ มากมาย แต่ละบริการมีที่เก็บ Git ของตัวเองการปรับใช้ทำได้ผ่าน Puppet โดยใช้ตัวแยกประเภทโหนดภายนอกที่กำหนดคลาสที่จะปรับใช้กับโฮสต์แต่ละประเภท และไฟล์ Puppet อยู่ใน repo Git ของตัวเอง ดังที่แสดงไว้ที่นี่:
เท่านั้น ไม่ใช่แค่ 3 บริการเท่านั้น แต่ยังมีมากกว่า 100 รายการอีกด้วย ดังนั้นโครงการ Puppet จึงเป็นเสาหินขนาดมหึมาที่มีรายการต่างๆ มากมาย และแน่นอนว่ามันอยู่ใน Git repo อิสระของมันเอง
ทีนี้ ตามมาด้วยตัวฉันเอง ซึ่งได้รับมอบหมายให้ตั้งค่ารูปแบบสำหรับ CI เพื่อที่ว่าเมื่อมีคนร้องขอให้รวมสาขาจาก เช่น บริการ A ให้เป็นต้นแบบ เราควรจะสามารถเริ่มต้นการสร้าง CI ที่จะ หมุนสภาพแวดล้อมเสมือนจริง ปรับใช้ Service A กับ VM บางตัว และตรวจสอบให้แน่ใจว่าสาขาใหม่ผ่านการทดสอบอัตโนมัติทั้งหมด แน่นอนว่าปัญหาคือการปรับใช้บิลด์ใหม่ของ Service A ฉันไม่เพียงแต่ต้องสร้างมันเท่านั้น แต่ฉันยังต้องอัปเดตไฟล์ Manifest Puppet เพื่ออ้างอิงถึงเวอร์ชันบิลด์ใหม่...และไฟล์ Puppet ก็อยู่ในนั้นด้วย ซื้อคืนที่เป็นอิสระอย่างสมบูรณ์ ไม่ใช่ในสาขาของฉัน ดังนั้นฉันจึงไม่มีวิธีที่ง่ายในการบอก Puppet Master ในเรื่องนั้น นี้ เราต้องใช้บิลด์ CI ไม่ใช่เวอร์ชันมาสเตอร์
ฉันไม่สามารถเป็นคนแรกที่ต้องการตั้งค่า CI สำหรับสภาพแวดล้อมเช่นนี้ได้ แต่ฉันได้ค้นหาทางเว็บเพื่อหาทางแก้ไขและว่างเปล่า บางทีฉันอาจใช้คำค้นหาผิด
ทุกคนสามารถแนะนำรูปแบบการออกแบบที่เหมาะสมซึ่งจะช่วยให้ฉันสามารถนำ CI ไปใช้กับ repos บริการทั้งหมดของฉันได้หรือไม่