Score:2

วิธีใช้การผสานรวมอย่างต่อเนื่องกับ Puppet และบริการต่างๆ

ธง sa

เรากำลังพยายามใช้ไปป์ไลน์การผสานรวมอย่างต่อเนื่องในสภาพแวดล้อมของเรา เรามีบริการต่างๆ มากมาย แต่ละบริการมีที่เก็บ Git ของตัวเองการปรับใช้ทำได้ผ่าน Puppet โดยใช้ตัวแยกประเภทโหนดภายนอกที่กำหนดคลาสที่จะปรับใช้กับโฮสต์แต่ละประเภท และไฟล์ Puppet อยู่ใน repo Git ของตัวเอง ดังที่แสดงไว้ที่นี่:

หุ่นเชิดและ Git

เท่านั้น ไม่ใช่แค่ 3 บริการเท่านั้น แต่ยังมีมากกว่า 100 รายการอีกด้วย ดังนั้นโครงการ Puppet จึงเป็นเสาหินขนาดมหึมาที่มีรายการต่างๆ มากมาย และแน่นอนว่ามันอยู่ใน Git repo อิสระของมันเอง

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

ฉันไม่สามารถเป็นคนแรกที่ต้องการตั้งค่า CI สำหรับสภาพแวดล้อมเช่นนี้ได้ แต่ฉันได้ค้นหาทางเว็บเพื่อหาทางแก้ไขและว่างเปล่า บางทีฉันอาจใช้คำค้นหาผิด

ทุกคนสามารถแนะนำรูปแบบการออกแบบที่เหมาะสมซึ่งจะช่วยให้ฉันสามารถนำ CI ไปใช้กับ repos บริการทั้งหมดของฉันได้หรือไม่

Score:2
ธง cn

วิธีที่ง่ายที่สุด (แต่ไม่จำเป็นต้องดีที่สุด) ที่ฉันสามารถทำได้คือการตั้งค่าบางอย่างที่จำเป็นสำหรับ CI ในการสร้างสภาพแวดล้อมการทดสอบ มันต้องมีชื่อสาขาที่ตรงกันหรือบางอย่าง นั่นจะบังคับให้นักพัฒนาสร้างสาขาในรหัส Puppet เพื่อปรับใช้รุ่นบิลด์ของตน

อย่างมีประสิทธิภาพ:

  1. Dave the Developer สร้างสาขาฟีเจอร์ใหม่ของบริการ โดยยึดตามตั๋ว: เช่น คุณลักษณะ/JIRA-999-บางงาน
  2. เดฟกดรหัสของเขา
  3. CICD ตรวจพบสาขาใหม่หรือ PR หรืออะไรก็ตาม เริ่มทำงาน
  4. ขั้นตอนของท่อมองหา เหมือนกัน ชื่อสาขาใน repo Puppet
  5. หากไม่มีสาขา แสดงว่าไปป์ไลน์ผิดพลาดและบอกให้เดฟไปสร้างสาขา
  6. หากมีอยู่ อาจเพิ่มการตรวจสอบเพื่อตรวจสอบว่ามีการเปลี่ยนแปลงอย่างน้อยหรือไม่
  7. การทดสอบทำงาน
  8. สอบผ่านทุกคนมีความสุข

ไม่ใช่ปัญหาที่แก้ไขได้ง่ายๆ และแนวทางนี้คุณจะต้องแน่ใจว่า Devs รู้ว่าควรอัปเดตเวอร์ชันที่ใด (อาจอยู่ในไฟล์ข้อมูล Hiera)

อีกวิธีเดียวที่ฉันเห็นการทำงานนี้คือการเปลี่ยนแปลงที่ใหญ่กว่ามากไปสู่บางอย่าง เช่น การทำให้คอนเทนเนอร์ ทำให้คุณจัดการหนึ่งเลเยอร์ (โครงสร้างพื้นฐาน) ด้วย Puppet จากนั้นปรับใช้คอนเทนเนอร์ที่ด้านบน จากนั้นคุณสามารถให้เครื่องมือแก่นักพัฒนาในการปรับใช้คอนเทนเนอร์ในขณะที่ยังคงควบคุมแพลตฟอร์มได้

ความคิดสุ่มสุดท้าย - คุณสามารถทำการทดสอบบางอย่างในระบบคลาวด์เพื่อหลีกเลี่ยงการใช้รหัส Puppet สำหรับสิ่งอื่น ๆ ยกเว้นผลิตภัณฑ์ / การจัดเตรียมได้หรือไม่? หรือใช้ประโยชน์จากหุ่นเชิดบนคลาวด์ในทางใดทางหนึ่ง?

Shaul Behr avatar
sa flag
นี่เป็นคำแนะนำที่ดี ปรากฎว่าฉันเอนไปทางความคิดที่จะทำลาย Puppet monolith มากขึ้นและวางรายการ Puppet ที่เกี่ยวข้องกับบริการภายใน repo บริการ แต่คำตอบของคุณก็สมควรได้รับรางวัล ขอบคุณ!
Score:1
ธง us

ความท้าทายที่นี่คือรหัสถูกตัดการเชื่อมต่อจากการปรับใช้

วิธีการของฉันคือการส่งแฮชคอมมิต Git ไปยัง Puppet จากนั้น Puppet จะใช้แฮชคอมมิตนั้นเพื่อรับโค้ดเพื่อปรับใช้ อย่างไรก็ตาม ฉันไม่รู้ว่า Puppet รองรับการส่งข้อโต้แย้งดังกล่าวไปยังงานหรือไม่

ในระหว่างขั้นตอนการเช็คเอาต์ของที่เก็บรหัสจริง แฮชจะถูกบันทึกแล้วส่งไปยัง Puppet

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา