จะรวม Vagrant กับ Jenkins เพื่อสภาพแวดล้อมการผสานรวมที่สมบูรณ์แบบได้อย่างไร


86

คุณมีโปรเจ็กต์ที่มีข้อกำหนด SW เพื่อให้ทำงานได้ (เช่น Apache เวอร์ชันเฉพาะ, เวอร์ชันของ PHP, อินสแตนซ์ของฐานข้อมูล MySQL และซอฟต์แวร์อื่น ๆ อีกสองสามชิ้น)

คุณได้ค้นพบVagrantแล้วดังนั้นสภาพแวดล้อมเสมือนของคุณจึงถูกตั้งค่าทั้งหมด คุณสามารถสร้างกล่องจากไฟล์การกำหนดค่าและตำราอาหารได้

นอกจากนี้คุณยังมีความเข้าใจข้อดีของระบบบูรณาการอย่างต่อเนื่องเช่นเจนกินส์

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

คุณจะตั้งค่าสภาพแวดล้อมของคุณอย่างไรเพื่อให้บรรลุสิ่งนี้?


4
นอกจากนี้การตั้งค่า Jenkins ของคุณเป็นกล่อง Vagrant ดังนั้นคุณสามารถเรียกใช้สภาพแวดล้อม CI นี้บนหลายแพลตฟอร์มได้เนื่องจากมีความแตกต่างมากมาย
Stephan Eggermont

1
คุณได้สร้างสภาพแวดล้อมดังกล่าวหรือไม่? การรวมกันของ Docker & Jenkins เป็นที่รู้จักกันดีอยู่แล้วอย่างไรก็ตามจะไม่เพียงพอสำหรับสภาพแวดล้อม Windows ซึ่งในกรณีนี้ตัวเลือกเดียวที่ดีคือ IMO คือ Vagrant + Jenkins มีบางแง่มุมที่ต้องพิจารณาเช่นเราต้องการทาสจริงๆหรือไม่และในบริบทใดหรือเราสามารถใช้เซิร์ฟเวอร์เดียวเพื่อสร้างสภาพแวดล้อมการสร้างคนจรจัดต่อโครงการตามความต้องการ (ในหลาย ๆ บริษัท มีเพียงไม่กี่โครงการเท่านั้นที่สร้างอย่างต่อเนื่องส่วนใหญ่ไม่ค่อยสร้าง) หรือเราควรใช้สิ่งนี้กับระบบการขจัดข้อมูลซ้ำซ้อนเพื่อลดขนาดดิสก์
majkinetor

คำตอบ:


36

เป็นทางออกที่ดีสำหรับการสร้างระบบคำแนะนำของฉัน:

  1. เจนกินส์ปัจจุบันของคุณทำงานเป็น CI หลัก (อาจเริ่มโดยผู้ใช้เจนกินส์)
  2. สร้างผู้ใช้รายอื่นในเครื่องเดียวกันหรือเครื่องอื่นเพื่อทำงานเป็นโหมดทาสเจนกินส์
    • jenkins slave สามารถเรียกใช้จาก jenkins master และสามารถใช้ผู้ใช้ที่แตกต่างกันเช่นคนเร่ร่อนที่ได้รับอนุญาตและสภาพแวดล้อมสำหรับคนเร่ร่อนดังนั้นจะไม่รบกวนเซิร์ฟเวอร์หลักของเจนกินส์
    • สร้างกล่องพเนจรฐานของคุณจากนั้นสามารถใช้ซ้ำเพื่อเร่งความเร็วสำหรับการปรับใช้ของคุณ
  3. ข้อมูลการติดตั้ง (แพ็คเกจ) ส่วนใหญ่สามารถจัดการได้โดยหุ่น (หรือเชฟ) เพื่อโหลดลงในกล่อง vm ของคุณ

คุณอาจลองดูveeweeซึ่งสามารถสร้างกล่องเร่ร่อนได้ทันที

นี่คือการทำให้ CI ง่ายขึ้นด้วย Jenkins CI และ Vagrantสำหรับแนวทางของฉันสำหรับคำแนะนำนี้


1
ลิงก์ของคุณเสียขออภัย
gogo_gorilla

3
ในกรณีที่มีผู้สนใจลิงก์เสียนี่คือสำเนาของMake CI ที่ง่ายขึ้นด้วย Jenkins CI และ Vagrant
Gilberto Treviño

12

คุณสามารถลองใช้Vagrant Plugin สำหรับ Jenkinsที่ปัจจุบันรองรับ Jenkins CD 1.532.3

คุณสามารถดูการสาธิตของปลั๊กอินนี้ได้ที่http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html


7
ปลั๊กอินนี้ไม่รองรับ Jenkins ที่สูงกว่า 1.490 ดังนั้นจึงเป็นข้อ จำกัด ใหญ่ :-(
kenyee

ไม่สนับสนุนคนจรจัดที่วิ่งบนทาสด้วย :(
Christophe Furmaniak

1
ใช่ แต่คุณต้องจัดการวงจรชีวิตทั้งหมดของ VM ด้วยตัวเอง (สร้างทำลายหรือไม่เมื่อสิ้นสุดงาน ... ) แนวคิดเบื้องหลังปลั๊กอินคือปลั๊กอินทำเพื่อคุณจากนั้นคุณสามารถมุ่งเน้นไปที่จุดประสงค์หลักของคุณ: ใช้ VM เป็นคอนเทนเนอร์แยก
Christophe Furmaniak

2
ปลั๊กอินที่กล่าวถึงมีปัญหาที่เกิดขึ้นซึ่งยังไม่ได้รับการแก้ไข ( issue.jenkins-ci.org/browse/JENKINS-26326 ) และการพัฒนาหยุดลงเมื่อหนึ่งปีที่แล้ว จะไม่แนะนำ
Ross Ivantsiv

1
การเรียกใช้อินสแตนซ์เร่ร่อนตามความต้องการเพื่อสร้างสิ่งที่ดูเหมือนเป็นสิ่งที่ถูกต้อง หากปลั๊กอินนี้ยังใช้งานไม่ได้?
Atifm

1

โดยส่วนตัวแล้วฉันขอแนะนำให้ใช้ Hashicorp Packer เพื่อสร้างกล่อง Vagrant ของคุณสำหรับนักพัฒนาจากนั้นใช้เพื่อส่งออก Docker หรือ AWS หรือภาพ OpenStack ที่คุณสามารถเรียกใช้บนระบบ CI ของคุณได้ Vagrant เป็นเครื่องมือที่ยอดเยี่ยม แต่ค่าใช้จ่ายของ VM อาจสูงเพียงเล็กน้อยเพื่อให้ระบบ CI หมุนขึ้นและลงอย่างต่อเนื่องโดยเฉพาะอย่างยิ่งหากคุณต้องการข้อเสนอแนะที่รวดเร็วจริงๆ

ในอดีตไคลเอนต์เราได้บูตเครื่อง Vagrant หนึ่งครั้งพร้อมกับระบบจากนั้นรัน Docker / Virtualenv สร้างขึ้นภายใน VM เหล่านั้นและเราทำลายพวกเขาเป็นระยะเมื่อมีการอัปเกรดครั้งใหญ่หรือปัญหาเกี่ยวกับสภาพแวดล้อมที่ทำงานไม่ถูกต้อง

https://www.packer.io/docs/builders/openstack.html


ถ้าฉันถามคุณเรียกใช้เจนกินส์เป็นผู้ใช้แยกหรือไม่? ถ้าเป็นเช่นนั้นคุณจัดการให้เข้าถึงคนเร่ร่อนได้อย่างไร ?? ขอบคุณ
Jaswanth Manigundan

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