ก่อนอื่น ณ วันนี้ GitLab Community Edition สามารถทำงานร่วมกับ Jenkins ได้อย่างสมบูรณ์ ไม่มีคำถาม.
ในสิ่งต่อไปนี้ฉันให้ข้อเสนอแนะเกี่ยวกับประสบการณ์ที่ประสบความสำเร็จซึ่งรวมทั้ง Jenkins และ GitLab CI ฉันจะหารือด้วยว่าคุณควรใช้ทั้งสองอย่างหรือเพียงอย่างเดียวและด้วยเหตุผลอะไร
ฉันหวังว่านี่จะให้ข้อมูลที่มีคุณภาพเกี่ยวกับโครงการของคุณเอง
จุดแข็งของ GitLab CI และ Jenkins
GitLab CI
GitLab CI รวมอยู่ใน GitLab SCM อย่างเป็นธรรมชาติ คุณสามารถสร้างไปป์ไลน์โดยใช้gitlab-ci.yml
ไฟล์และจัดการผ่านอินเทอร์เฟซแบบกราฟิก
เห็นได้ชัดว่าไปป์ไลน์เหล่านี้เป็นโค้ดจะถูกจัดเก็บไว้ในฐานรหัสโดยบังคับใช้แนวปฏิบัติ "ทุกอย่างเป็นโค้ด" (การเข้าถึงการกำหนดเวอร์ชันความสามารถในการทำซ้ำการใช้ซ้ำ ฯลฯ )
GitLab CI เป็นเครื่องมือจัดการภาพที่ยอดเยี่ยม:
- สมาชิกทุกคนในทีม (รวมถึงคนที่ไม่ใช่ฝ่ายเทคนิค) สามารถเข้าถึงสถานะวงจรชีวิตของแอปพลิเคชันได้อย่างรวดเร็วและง่ายดาย
- ดังนั้นจึงสามารถใช้เป็นแบบโต้ตอบและแดชบอร์ดการดำเนินงานสำหรับการจัดการรุ่น
เจนกินส์
Jenkins เป็นเครื่องมือสร้างที่ยอดเยี่ยม จุดเด่นอยู่ที่ปลั๊กอินจำนวนมาก โดยเฉพาะอย่างยิ่งฉันโชคดีในการใช้ปลั๊กอินอินเทอร์เฟซระหว่างเจนกินส์กับเครื่องมือ CI หรือซีดีอื่น ๆ นี่เป็นตัวเลือกที่ดีกว่าการพัฒนาอินเทอร์เฟซการโต้ตอบระหว่างสององค์ประกอบใหม่ (อาจไม่ดี)
Pipeline เป็นรหัสสามารถใช้ได้โดยใช้ groovy
สคริปต์
ใช้ GitLab CI และ Jenkins ร่วมกัน
ในตอนแรกอาจฟังดูซ้ำซ้อนเล็กน้อย แต่การรวม GitLab CI และ Jenkins นั้นมีประสิทธิภาพมาก
- GitLab CI จัดระเบียบไปป์ไลน์ (เชนรันมอนิเตอร์ ...
- เจนกินส์ทำงานและอำนวยความสะดวกในการโต้ตอบกับเครื่องมือของบุคคลที่สาม
ข้อดีอีกอย่างของการออกแบบนี้คือการมีข้อต่อหลวมระหว่างเครื่องมือ:
- เราสามารถเปลี่ยนส่วนประกอบของโรงงานสร้างโดยไม่ต้องทำกระบวนการ CI / CD ใหม่ทั้งหมด
- เราสามารถมีสภาพแวดล้อมการสร้างที่แตกต่างกันโดยรวม Jenkins, TeamCity (อาจเป็นหลายตัว), คุณตั้งชื่อและยังมีเครื่องมือตรวจสอบเดียว
การแลกเปลี่ยน
แน่นอนว่ามีราคาที่ต้องจ่ายสำหรับการออกแบบนี้: การตั้งค่าเริ่มต้นนั้นยุ่งยากและคุณต้องมีความเข้าใจในเครื่องมือมากมายในระดับเล็กน้อย
ด้วยเหตุนี้ฉันจึงไม่แนะนำให้ตั้งค่าดังกล่าวเว้นแต่
- คุณมีเครื่องมือของบุคคลที่สามมากมายให้จัดการ นั่นคือตอนที่ Jenkins มาพร้อมกับปลั๊กอินมากมาย
- คุณต้องจัดการกับแอปพลิเคชันที่ซับซ้อนด้วยเทคโนโลยีที่แตกต่างกันมีสภาพแวดล้อมการสร้างที่แตกต่างกันและยังต้องมี UI การจัดการวงจรชีวิตของแอปพลิเคชันแบบรวม
หากคุณไม่อยู่ในสถานการณ์เหล่านี้คุณอาจจะดีกว่าที่จะมีเพียงหนึ่งในสองสถานการณ์ แต่ไม่ใช่ทั้งสองอย่าง
ถ้าฉันต้องเลือก
ทั้ง GitLab CI และ Jenkins มีข้อดีข้อเสีย ทั้งสองเป็นเครื่องมือที่มีประสิทธิภาพ แล้วจะเลือกอันไหนดี?
คำตอบ 1
เลือกคนที่ทีมของคุณ (หรือคนใกล้ชิด) มีความเชี่ยวชาญระดับหนึ่งแล้ว
คำตอบ 2
หากคุณเป็นนักศึกษาใหม่ในเทคโนโลยี CI เพียงแค่เลือกหนึ่งและเริ่มต้นใช้งาน
- หากคุณใช้ GitLab และมีความสามารถพิเศษสำหรับทุกอย่างเป็นรหัสคุณควรเลือก GitLab CI
- หากคุณต้องพูดคุยกับเครื่องมือ CI / CD อื่น ๆ หรือต้องการ GUI นั้นในการสร้างงานของคุณอย่างแท้จริงให้ไปที่ Jenkins
พวกคุณที่ใช้ GitLab และไม่แน่ใจว่าพวกเขาจะทำต่อไปยังคงต้องจำไว้ว่าการเลือก GitLab CI จะบ่งบอกถึงการทิ้งไปป์ไลน์ CI / CD ของคุณทั้งหมด
คำสุดท้ายคือ: ความสมดุลเอนเอียงไปทางเจนกินส์เล็กน้อยเนื่องจากมีปลั๊กอินจำนวนมาก แต่มีโอกาสที่ GitLab CI จะเติมเต็มช่องว่างได้อย่างรวดเร็ว