วิธีที่มีประสิทธิภาพเพื่อให้แน่ใจว่า“ ระบบกระดานชนวนสะอาด” สำหรับบริการการรวมอย่างต่อเนื่อง


10

เราต้องการตั้งค่าบริการการรวมอย่างต่อเนื่อง (CI) สำหรับโครงการของเรา บริการ CI นั้นควรควบคุมทุกด้านของอายุการใช้งานของโครงการรวมถึงการปรับใช้

นั่นคือเราต้องการตัวแทน CI ในแต่ละการวนซ้ำเพื่อทำความสะอาดระบบ (โดยเฉพาะ Ubuntu Server) ปรับใช้โครงการของเราที่นั่นและทำการทดสอบ

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

การปรับใช้โครงการจะติดตั้งแพคเกจ Debian บางตัวกำหนดค่าไซต์ nginx หลายแห่งและติดตั้งแพคเกจบางตัวในการใช้งานตัวจัดการแพคเกจเฉพาะภาษา (LuaRocks) ทั่วทั้งระบบ ไม่มีอะไรน่ารำคาญไปกว่านี้อีกแล้ว (ฉันเชื่อ) ดังนั้นจึงเป็นสิ่งสำคัญที่จะสามารถตั้งค่ากระดานชนวนที่สะอาดได้อย่างรวดเร็ว (ภายในหนึ่งนาทีสำหรับฮาร์ดแวร์ที่ทันสมัยเร็วกว่าดีกว่า) เพื่อให้มั่นใจได้ว่าการแยกและความสะอาดสมบูรณ์แบบ

ฉันเห็นสองวิธีทำสิ่งที่เราต้องการ:

  • ไม่ว่าจะตั้งคุกอะไรสักอย่าง (เช่น lxc หรือบางที)
  • หรือติดตั้งเครื่องเสมือนบางอย่างที่สามารถทำภาพรวมและใช้งานได้

แต่ ณ จุดนี้ฉันไม่มีข้อมูลเพียงพอที่จะตัดสินใจ

คุณจะแนะนำอะไร ตัวเลือกอื่น ๆ ? ชื่อเครื่องมือเฉพาะใด ๆ

หมายเหตุ: บริการ CI จะทำงานภายในแขก Citrix XenServer วิธีการชำระเงินจะใช้ได้ถ้าราคาสมเหตุสมผล (โดยปกติแล้วพวกเขาจะไม่สมเหตุสมผลในฟิลด์นี้) โซลูชัน CI ระยะไกลไม่ตกลง

คำตอบ:


5

ลองดูที่กุ๊ก / จรจัด ไม่แน่ใจว่ามันจะเร็วพอหรือเปล่า

ในกรณีที่คุณไม่คุ้นเคยกับ Chef มันเป็นเซิร์ฟเวอร์ที่ได้รับการออกแบบมาเพื่อให้ใช้งานง่าย ๆ ฉันขอแนะนำให้ดูที่เว็บคาสต์แห่งหนึ่ง Django Chef Webcast

คนจรจัด, veewee พ่อครัวเดี่ยวและมีดเดี่ยวสิ่งที่ผมคิดว่านี่เป็นหนึ่งครอบคลุมมากที่สุดของสิ่งที่คุณต้องการจะทำ

โพสต์บล็อก Vagrant โพสต์บล็อกแสดงการตั้งค่าเซิร์ฟเวอร์อย่างรวดเร็วโดยใช้ Vagrant


ขอบคุณ. คุณสนใจที่จะให้รายละเอียดเพิ่มเติมในคำตอบของคุณ?
Alexander Gladysh

ฉันไม่ได้ใช้มันเพื่อสิ่งนี้สิ่งที่ฉันทำได้ก็คือโพสต์ลิงค์เล็ก ๆ น้อย ๆ ที่ฉันคิดว่าน่าจะช่วยได้
Philip Tinney

13

มีลักษณะที่เจนกินส์ มันมีปลั๊กอินที่ช่วยให้คุณสามารถเรียกใช้ในการสร้างเครื่องเสมือนในVMWareหรือVirtualBoxหรือในอเมซอน / a Eucalyptus เมฆ สำหรับเครื่องเสมือนที่ทำงานในคลาวด์คุณสามารถระบุสคริปต์เริ่มต้นที่คุณสามารถทำตามขั้นตอนเช่นการติดตั้งแพคเกจ


ขอบคุณ แต่เจนกินส์เป็นเซิร์ฟเวอร์ CI และฉันต้องการทราบวิธีการในการสร้างตัวเราเอง
Alexander Gladysh

2
@AlexanderGladysh ทำไมคุณต้องการบูรณาการล้อ? Jenkins builds สามารถเรียกใช้ทุกอย่างตั้งแต่สร้างไฟล์ไปจนถึงสคริปต์เชลล์ธรรมดารวมถึงมีอินเตอร์เฟสที่แข็งแกร่งการสนับสนุนที่ดีและปลั๊กอินจำนวนมาก แม้ว่างานสร้างของคุณจะซับซ้อนมาก แต่ก็ต้องเป็นเชลล์สคริปต์ที่บางแห่งซึ่งเจนกินส์สามารถทำงานได้
TheLQ

แม้ว่าคุณจะไม่ต้องการใช้เจนกินส์ฉันก็คิดว่าบางสิ่งที่อิงกับคลาวด์น่าจะเป็นวิธีที่ดีสำหรับคุณ คุณสามารถปรับแต่งอิมเมจของเครื่องเพื่อจัดหาซอฟต์แวร์ที่คุณต้องการและเพิ่มการกำหนดค่าและรหัสเพื่อทดสอบเมื่อเริ่มต้นอินสแตนซ์เพื่อลดเวลาเริ่มต้นเท่านั้น
Lars Kotthoff

ยังไงก็ตามเจนกินส์หรือไม่มีเจนกินส์สิ่งที่ต้องใช้เพื่อให้ได้ภาพรวมระบบปฏิบัติการชนวนอย่างรวดเร็ว? (โปรดหยุดพูดถึงคลาวด์ของบุคคลที่สาม - ต้องทำงานบนเซิร์ฟเวอร์ของเราเอง)
Alexander Gladysh

ใช้งาน Eucalyptus / OpenStack / ... บนเซิร์ฟเวอร์ของคุณเองหรือ
Lars Kotthoff

2

ฉันจะใช้โครงสร้างพื้นฐาน VM และสร้างเทมเพลตฐานหรือใช้คลาวด์ตามที่ @LarsKotthoff แนะนำ มันง่ายที่จะหมุนมันอย่างรวดเร็วและคุณสามารถมั่นใจได้ว่าคุณจะเริ่มจากที่ใด

อย่างไรก็ตามในที่สุดคุณจะต้องมีอะไรบางอย่างที่อยู่นอก VM ที่จะจัดการสิ่งที่เกิดขึ้น (ติดตั้งเครื่องและเริ่มกระบวนการใด ๆ ที่คุณต้องการบนเครื่อง) ฉันจะดู Jenkins สำหรับความสามารถในการจับเอาท์พุทของสคริปต์เพื่อการตรวจสอบในภายหลัง

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


ขอบคุณ แต่ฉันต้องการติดตั้งสิ่งต่าง ๆ ภายในอินสแตนซ์ Xen VM ไม่ใช่ด้านนอก - มันง่ายกว่าที่จะจัดระเบียบในกรณีเฉพาะของฉัน ฉันจะตรวจสอบเจนกินส์ แต่ฉันยังมองหาวิธีแก้ปัญหาที่แคบกว่านี้
Alexander Gladysh

นอกจากนี้โปรดอธิบายอย่างละเอียดเกี่ยวกับ "ใช้โครงสร้างพื้นฐาน VM และสร้างเทมเพลตฐาน"
Alexander Gladysh

2

เราต้องการตั้งค่าบริการการรวมอย่างต่อเนื่อง (CI) สำหรับโครงการของเรา บริการ CI นั้นควรควบคุมทุกด้านของอายุการใช้งานของโครงการรวมถึงการปรับใช้

เจนกินส์ได้รับการกล่าวถึงค่อนข้างน้อย คุณสามารถเริ่มบทใหม่ ๆ ได้ แต่เจนกิ้นส์จะมอบความยืดหยุ่นแบบเดียวกันทั้งหมดให้คุณโดยไม่ต้องมีค่าใช้จ่ายรวมเข้าด้วยกัน

นั่นคือเราต้องการตัวแทน CI ในแต่ละการวนซ้ำเพื่อทำความสะอาดระบบ (โดยเฉพาะ Ubuntu Server) ปรับใช้โครงการของเราที่นั่นและทำการทดสอบ

การปรับใช้โครงการจะติดตั้งแพคเกจ Debian บางตัวกำหนดค่าไซต์ nginx หลายแห่งและติดตั้งแพคเกจบางตัวในการใช้งานตัวจัดการแพคเกจเฉพาะภาษา (LuaRocks) ทั่วทั้งระบบ ไม่มีอะไรน่ารำคาญไปกว่านี้อีกแล้ว (ฉันเชื่อ) ดังนั้นจึงเป็นสิ่งสำคัญที่จะสามารถตั้งค่ากระดานชนวนที่สะอาดได้อย่างรวดเร็ว (ภายในหนึ่งนาทีสำหรับฮาร์ดแวร์ที่ทันสมัยเร็วกว่าดีกว่า) เพื่อให้มั่นใจได้ว่าการแยกและความสะอาดสมบูรณ์แบบ

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

วิธีการชำระเงินจะใช้ได้ถ้าราคาสมเหตุสมผล (โดยปกติแล้วพวกเขาจะไม่สมเหตุสมผลในฟิลด์นี้) โซลูชัน CI ระยะไกลไม่ตกลง

หากคุณกำลังมองหาเครื่องจักรหลายเครื่องพร้อมกันให้ตรวจสอบNimbula (ฉันไร้ยางอายฉันทำงานเพื่อพวกเขา) สำหรับการปรับใช้ที่มีขนาดเล็กลงได้ฟรีและช่วยให้คุณสามารถรวมคลาวด์ส่วนตัวของคุณเพื่อทำการทดสอบ ... หรืออะไรก็ได้ ระหว่าง Jenkins และไฟล์ orchestration คุณสามารถหมุนเซิร์ฟเวอร์โฮสต์ทดสอบไคลเอ็นต์และทุกอย่างอื่นเพื่อเรียกใช้โค้ดทดสอบเต็มรูปแบบโดยไม่ต้องโต้ตอบ


ฮึ. บางทีฉันอาจจะช้าในวันนี้ แต่ฉันพยายามที่จะขุดผ่านเว็บไซต์ Nimbula แต่ไม่เห็นเหตุผลที่อยู่เบื้องหลังการตลาดพูด คุณสนใจที่จะชี้ไปที่ข้อความที่มีเหตุผลซึ่งอธิบายถึงวิธีการทำสิ่งที่ฉันต้องการหรือไม่? (เช่นตั้งค่าเทมเพลตของเครื่องแขกและจากสคริปต์ให้สร้างอินสแตนซ์และฆ่ามันสำหรับแต่ละเซสชัน CI)
Alexander Gladysh

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