การรวมกลุ่มอย่างต่อเนื่องเป็นอย่างไรใน บริษัท ขนาดใหญ่


11

ใน บริษัท ของฉันเป็นเรื่องปกติที่จะไม่ทำบิลด์ขั้นกลางใด ๆ เพื่อตรวจสอบว่าแต่ละฟีเจอร์ / สาขาแก้ไขข้อผิดพลาดรวมอยู่ใน dev มีบิลด์รายวันเท่านั้นซึ่งจะทำให้การทดสอบล้มเหลวและสร้างข้อผิดพลาดได้เสมอ ฉันได้รับการบอกว่ามันไม่สมเหตุสมผลที่จะสร้างสำหรับการผสานแต่ละครั้งสำหรับนักพัฒนามากกว่า 1,000 คน

ดังนั้นฉันจึงค้นหาวิธีการจัดระเบียบ CI ใน บริษัท ที่มีนักพัฒนาจำนวนมากหรือมากกว่านั้น (Microsoft, Facebook) และไม่พบอะไรเลย บางทีคนวงในสามารถบอกฉันได้?



@gnat คุณเพียงพอหรือไม่ มันเกี่ยวข้องอย่างไร ฉันถามถึงประสบการณ์วงในและชี้ให้ บริษัท เป็นตัวอย่าง ฉันไม่ได้ขอการสนับสนุนลูกค้า
Megamozg

11
@gnat ฉันไม่เห็นว่าเกี่ยวข้องกับสิ่งนั้นอย่างไร Megamozg: CI จัดโดยโมดูลของโครงการไม่มีโมดูลที่มีนักพัฒนา 1,000 คน ดังนั้นหากมีผู้คนมากเกินไปให้ลดโปรเจค / โมดูลของคุณในส่วนที่เล็กลง
Walfrat

@ Walrat มันเกี่ยวข้องโดยสิ้นเชิง ไซต์นี้ไม่ได้ทำการสำรวจ / สำรวจความคิดเห็นของ บริษัท ใหญ่ ๆ ในวงในเกี่ยวกับการที่ บริษัท ของพวกเขาทำสิ่งต่าง ๆ หากมีใครอยากรู้เกี่ยวกับเรื่องแบบนี้พวกเขาควรใช้ช่องทางการสนับสนุนของ บริษัท เหล่านี้
ริ้น

@gnat ฉันไม่เห็นว่าลิงก์ที่คุณให้ไว้มีผลอย่างไรโดยเฉพาะอย่างยิ่งกับความคิดเห็นที่คุณให้ไว้ในการตอบสนองต่อ Walfrat จากความคิดเห็นนั้น IMHO นี้จะเป็นลิงค์ที่เหมาะสม (ส่วนหนึ่งเกี่ยวกับคำถามประเภทการสำรวจความคิดเห็น) softwareengineering.meta.stackexchange.com/a/6490
Newtopian

คำตอบ:


12

โดยทั่วไปแล้วปัญหาการปรับสเกล คุณแยกงานของคุณออกเป็นโมดูลซึ่งอาจเป็นโครงการและ / หรือฟังก์ชันการทำงานที่แตกต่างกันของผลิตภัณฑ์ของคุณ

คุณจะมีทีมที่ครอบคลุมชุดของโมดูลเหล่านั้น แต่ละทีมเหล่านั้นจะมีการตั้งค่ารอบ CI สำหรับขอบเขตของพวกเขาและหลังจากรอบของพวกเขาจะผ่านไปแล้วรหัสจะถูกผลักไปยัง repos ต้นแบบที่รอบ CI ต้นแบบจะถูกเรียกใช้

วัฏจักร CI หลักมักจะแตกต่างจาก CI ระดับทีมในด้านนี้:

  • รอบ CI ระดับทีมไม่จำเป็นต้องสร้างรหัสของทั้ง บริษัท เพียงแค่โมดูลที่พวกเขารับผิดชอบและโมดูลที่ต้องพึ่งพา หากมีสองโมดูลที่เป็นอิสระอย่างสมบูรณ์และในทีมที่แตกต่างกันพวกเขาจะไม่เป็นส่วนหนึ่งของวงจร CI ของทีมอื่น
  • รอบ CI ระดับทีมสามารถมีการทดสอบอัตโนมัติที่มีรายละเอียดมากกว่ารอบ CI หลัก Master CI cycle จะมีการทดสอบการตรวจสุขภาพจิตและการทดสอบการถดถอยซึ่งจะขึ้นอยู่กับขนาดของ master solution รันทุกวันหรือทุกสัปดาห์เนื่องจากบางครั้งการทดสอบเหล่านี้อาจใช้เวลามากกว่า 24 ชั่วโมงในการดำเนินการ

สิ่งที่คุณต้องทำด้วยวิธีการนี้คือการให้การผลักดันอัตโนมัติจาก repos ในท้องถิ่นไปสู่ ​​repo ส่วนกลางเมื่อรอบ CI ในท้องถิ่นผ่านไปเพื่อมิให้นักพัฒนาของคุณใช้เวลามหาศาลในการส่งรหัสไปยัง repos ส่วนกลาง


7

นอกจากสิ่งที่ @Vladimir_Stokic กล่าวในบางทีม (ของฉันมีผู้พัฒนาประมาณ 150 คน) เราจะสร้างบ่อยกว่าทุก ๆ 24 ชั่วโมง เมื่อไรก็ตามที่มีการกระทำเกิดขึ้นเราจะเริ่มจับเวลา 5 นาที หลังจาก 5 นาทีขึ้นไปความมุ่งมั่นทั้งหมดที่เกิดขึ้นในช่วงเวลา 5 นาทีจะถูกรวมและสร้างขึ้น การสร้างมักจะเป็นการสร้างที่เพิ่มขึ้น เรามีตัวสร้างแยกต่างหากที่รันการทดสอบหน่วยสำหรับแต่ละบิลด์ที่เกิดขึ้น หลังจากการสร้างเสร็จสิ้นหากมีข้อผูกพันใด ๆ เพิ่มเติมในระหว่างการสร้าง (ซึ่งใช้เวลาระหว่าง 1 ถึง 45 นาทีขึ้นอยู่กับสิ่งที่เปลี่ยนแปลง) การเปลี่ยนแปลงที่รอดำเนินการจะถูกสร้างขึ้นและอื่น ๆ เรายังมีงานสร้าง (สะอาดเต็ม) ทุกคืน แต่งานสร้างที่เกิดขึ้นในแต่ละการคอมมิชชัน (โดยประมาณ) บอกเราอย่างรวดเร็วว่าการทดสอบใด ๆ ล้มเหลว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.