เจนกินส์คืออะไร? เหตุใดจึงใช้เครื่องมือการผสานรวมอย่างต่อเนื่อง (CI)
เจนกินส์คืออะไร?
เจนกิ้นส์ เป็นเซิร์ฟเวอร์การรวมต่อเนื่องแบบโอเพ่นซอร์สที่เขียนมา Java สำหรับการเตรียมห่วงโซ่การดำเนินการเพื่อให้บรรลุกระบวนการบูรณาการอย่างต่อเนื่องในรูปแบบอัตโนมัติ Jenkins สนับสนุนวงจรชีวิตการพัฒนาซอฟต์แวร์ที่สมบูรณ์ตั้งแต่การสร้าง การทดสอบ การจัดทำเอกสารซอฟต์แวร์ การปรับใช้ และขั้นตอนอื่นๆ ของวงจรชีวิตการพัฒนาซอฟต์แวร์
Jenkins เป็นแอปพลิเคชันที่ใช้กันอย่างแพร่หลายทั่วโลก โดยมีการติดตั้งใช้งานแล้วกว่า 300 ครั้งและเพิ่มขึ้นทุกวัน ด้วยการใช้ Jenkins บริษัทซอฟต์แวร์สามารถเร่งกระบวนการพัฒนาซอฟต์แวร์ของตนได้ เนื่องจาก Jenkins สามารถสร้างและทดสอบโดยอัตโนมัติได้อย่างรวดเร็ว
เป็นแอปพลิเคชันบนเซิร์ฟเวอร์และต้องใช้เว็บเซิร์ฟเวอร์เช่น Apache Tomcat เหตุผลที่ซอฟต์แวร์ Jenkins ได้รับความนิยมอย่างมากก็คือการติดตามงานซ้ำๆ ที่เกิดขึ้นระหว่างการพัฒนาโครงการ ตัวอย่างเช่น หากทีมของคุณกำลังพัฒนาโปรเจ็กต์ Jenkins จะทดสอบการสร้างโปรเจ็กต์ของคุณอย่างต่อเนื่อง และแสดงข้อผิดพลาดในระยะแรกของการพัฒนา
การบูรณาการอย่างต่อเนื่องคืออะไร?
การบูรณาการอย่างต่อเนื่อง เป็นกระบวนการรวมการเปลี่ยนแปลงโค้ดจากนักพัฒนาหลายรายไว้ในโปรเจ็กต์เดียวหลายครั้ง ซอฟต์แวร์จะถูกทดสอบทันทีหลังจากการคอมมิตโค้ด ในการคอมมิตโค้ดแต่ละครั้ง โค้ดจะถูกสร้างและทดสอบ หากผ่านการทดสอบ บิลด์จะได้รับการทดสอบสำหรับการปรับใช้ หากการปรับใช้สำเร็จ โค้ดจะถูกส่งไปยังการใช้งานจริง
คอมมิต สร้าง ทดสอบ และปรับใช้นี้เป็นกระบวนการต่อเนื่อง จึงเป็นที่มาของชื่อการรวม/ปรับใช้อย่างต่อเนื่อง
เจนกินส์ทำงานอย่างไร
Jenkins เป็นแอปพลิเคชันบนเซิร์ฟเวอร์และต้องการเว็บเซิร์ฟเวอร์เช่น Apache Tomcat เพื่อทำงานบนแพลตฟอร์มต่างๆ เช่น Windowsลินุกซ์ macOS, Unix ฯลฯ หากต้องการใช้ Jenkins คุณต้องสร้างไปป์ไลน์ซึ่งเป็นชุดขั้นตอนที่เซิร์ฟเวอร์ Jenkins จะดำเนินการ Jenkins Continuous Integration Pipeline เป็นเครื่องมืออันทรงพลังที่ประกอบด้วยชุดเครื่องมือที่ออกแบบมา เจ้าภาพ, หน้าจอ, รวบรวม and ทดสอบ รหัสหรือการเปลี่ยนแปลงรหัสเช่น:
- เซิร์ฟเวอร์การรวมอย่างต่อเนื่อง (เจนกินส์, Bamboo, CruiseControl, TeamCityและอื่นๆ)
- เครื่องมือควบคุมแหล่งที่มา (เช่น CVS, SVN, GIT, Mercurial, Perforce, ClearCase และอื่นๆ)
- เครื่องมือสร้าง (สร้าง มด มาเวน ไอวี่ Gradleและอื่นๆ)
- กรอบการทดสอบอัตโนมัติ (Selenium, Appium, TestComplete, UFT และอื่นๆ)
ประวัติศาสตร์เจนกิน
- โคสุเกะ คาวากุจิ, เอ Java นักพัฒนาที่ทำงานที่ SUN Microsystems รู้สึกเบื่อหน่ายกับการสร้างโค้ดและแก้ไขข้อผิดพลาดซ้ำๆ ในปี 2004 ได้สร้างเซิร์ฟเวอร์อัตโนมัติชื่อ Hudson ที่สร้างและทดสอบงานโดยอัตโนมัติ
- ใน 2011, Oracle ผู้เป็นเจ้าของ Sun Microsystems มีข้อพิพาทกับชุมชนโอเพนซอร์สของ Hudson ดังนั้นพวกเขาจึงแยก Hudson ออกและเปลี่ยนชื่อเป็น Jenkins
- ทั้งฮัดสันและเจนกินส์ยังคงดำเนินการอย่างอิสระ แต่ในช่วงเวลาสั้นๆ เจนกินส์ได้ซื้อโครงการและผู้สนับสนุนมากมาย ในขณะที่ฮัดสันยังคงมีโครงการเพียง 32 โครงการ เมื่อเวลาผ่านไป เจนกินส์ได้รับความนิยมมากขึ้น และฮัดสันไม่ได้รับการดูแลอีกต่อไป
เหตุใดจึงต้องใช้การบูรณาการอย่างต่อเนื่องกับเจนกินส์
บางคนอาจคิดว่าการพัฒนาซอฟต์แวร์แบบเก่านั้นดีกว่า มาทำความเข้าใจข้อดีของ CI ด้วย Jenkins ด้วยตัวอย่างต่อไปนี้
ลองจินตนาการว่ามีนักพัฒนาประมาณ 10 คนที่กำลังทำงานเกี่ยวกับ พื้นที่เก็บข้อมูลที่ใช้ร่วมกัน- นักพัฒนาซอฟต์แวร์บางรายทำงานให้เสร็จภายใน 25 วัน ขณะที่บางรายใช้เวลา 30 วันจึงจะเสร็จสิ้น
ก่อนเจนกินส์ | หลังจากเจนกินส์ |
---|---|
เมื่อ Developer ทุกคนทำงานเขียนโค้ดที่ได้รับมอบหมายเสร็จสิ้นแล้ว พวกเขาก็มักจะคอมมิตโค้ดของตนทั้งหมดในเวลาเดียวกัน Later, สร้างได้รับการทดสอบและปรับใช้แล้ว
การคอมมิตโค้ดถูกสร้างขึ้น และรอบการทดสอบมีไม่บ่อยนัก และบิลด์เดียวก็เสร็จสิ้นหลังจากผ่านไปหลายวัน |
โค้ดถูกสร้างขึ้นและทดสอบทันทีที่ Developer คอมมิตโค้ด Jenkin จะสร้างและทดสอบโค้ดหลายครั้งในระหว่างวัน
หากการสร้างสำเร็จ Jenkins จะปรับใช้ต้นทางในเซิร์ฟเวอร์ทดสอบและแจ้งให้ทีมปรับใช้ทราบ หากการสร้างล้มเหลว Jenkins จะแจ้งข้อผิดพลาดให้ทีมนักพัฒนาทราบ |
เนื่องจากโค้ดถูกสร้างขึ้นทั้งหมดในคราวเดียว นักพัฒนาบางรายจึงต้องรอจนกว่านักพัฒนารายอื่นจะเขียนโค้ดเสร็จจึงจะตรวจสอบบิลด์ของตนได้ | รหัสจะถูกสร้างขึ้นทันทีหลังจากที่นักพัฒนาคนใดคนหนึ่งกระทำ |
ไม่ใช่เรื่องง่ายที่จะแยก ตรวจจับ และแก้ไขข้อผิดพลาดสำหรับการดำเนินการหลายรายการ | เนื่องจากโค้ดถูกสร้างขึ้นหลังจากการคอมมิตแต่ละครั้งของ Developer คนเดียว จึงเป็นเรื่องง่ายที่จะตรวจสอบว่าโค้ดของใครเป็นสาเหตุให้การสร้างล้มเหลว |
การสร้างโค้ดและ กระบวนการทดสอบ เป็นแบบแมนนวลทั้งหมด ดังนั้นจึงมีโอกาสเกิดข้อผิดพลาดได้มาก | กระบวนการสร้างและทดสอบอัตโนมัติช่วยประหยัดเวลาและลดข้อบกพร่อง |
โค้ดจะถูกนำมาใช้งานเมื่อข้อผิดพลาดทั้งหมดได้รับการแก้ไขและทดสอบแล้ว | โค้ดจะถูกนำไปใช้งานหลังจากการสร้างและทดสอบสำเร็จทุกครั้ง |
วงจรการพัฒนาช้า | วงจรการพัฒนาเป็นไปอย่างรวดเร็ว คุณสมบัติใหม่พร้อมให้ใช้งานมากขึ้นสำหรับผู้ใช้ เพิ่มผลกำไร |
กรณีศึกษาในโลกแห่งความเป็นจริงของการบูรณาการอย่างต่อเนื่อง
ฉันแน่ใจว่าพวกคุณทุกคนคงรู้จักโทรศัพท์ Nokia รุ่นเก่า Nokia เคยใช้กระบวนการที่เรียกว่า nightly build หลังจากมีการคอมมิตหลายครั้งจากนักพัฒนาที่หลากหลายในระหว่างวัน ซอฟต์แวร์ก็ถูกสร้างขึ้นทุกคืน เนื่องจากซอฟต์แวร์ถูกสร้างขึ้นเพียงวันละครั้ง การแยก ระบุ และแก้ไขข้อผิดพลาดในฐานโค้ดขนาดใหญ่จึงเป็นเรื่องยากลำบากมาก
Laterพวกเขานำแนวทางบูรณาการอย่างต่อเนื่องมาใช้ ซอฟต์แวร์ถูกสร้างขึ้นและทดสอบทันทีที่นักพัฒนายอมรับโค้ด หากตรวจพบข้อผิดพลาด นักพัฒนาที่เกี่ยวข้องจะสามารถแก้ไขข้อบกพร่องได้อย่างรวดเร็ว
ปลั๊กอินเจนกินส์
ตามค่าเริ่มต้น Jenkins จะมาพร้อมกับชุดคุณลักษณะที่จำกัด หากคุณต้องการรวมการติดตั้ง Jenkins เข้ากับเครื่องมือควบคุมเวอร์ชัน เช่น Git คุณจะต้องติดตั้งปลั๊กอินที่เกี่ยวข้องกับ Git จริงๆ แล้ว สำหรับการบูรณาการกับเครื่องมืออย่าง Maven Amazon EC2 คุณต้องติดตั้งปลั๊กอินที่เกี่ยวข้องใน Jenkins ของคุณ
ข้อดีของการใช้เจนกินส์
- เจนกินส์ได้รับการบริหารจัดการโดยชุมชนซึ่งเปิดกว้างมาก ทุกเดือน พวกเขาจะจัดการประชุมสาธารณะและรับฟังความคิดเห็นจากสาธารณชนเพื่อพัฒนาโครงการเจนกินส์
- จนถึงขณะนี้มีการปิดตั๋วประมาณ 280 ใบแล้ว และโปรเจ็กต์จะเผยแพร่เวอร์ชันเสถียรทุกๆ สามเดือน
- เมื่อเทคโนโลยีเติบโตขึ้น Jenkins ก็เติบโตขึ้นเช่นกัน จนถึงตอนนี้ Jenkins มีปลั๊กอินประมาณ 320 รายการที่เผยแพร่ในฐานข้อมูลปลั๊กอิน ด้วยปลั๊กอิน Jenkins จะมีพลังและฟีเจอร์ที่หลากหลายยิ่งขึ้น
- เครื่องมือ Jenkins ยังรองรับสถาปัตยกรรมบนคลาวด์เพื่อให้คุณสามารถปรับใช้ Jenkins บนแพลตฟอร์มบนคลาวด์ได้
- สาเหตุที่ Jenkins ได้รับความนิยมก็คือว่ามันถูกสร้างขึ้นโดยนักพัฒนาสำหรับนักพัฒนา
ข้อเสียของการใช้เจนกินส์
แม้ว่าเจนกินส์จะเป็นเครื่องมือที่ทรงพลังมาก แต่ก็มีข้อบกพร่อง
- อินเทอร์เฟซล้าสมัยและไม่เป็นมิตรกับผู้ใช้เมื่อเทียบกับแนวโน้ม UI ในปัจจุบัน
- แม้ว่า Jenkins จะเป็นที่ชื่นชอบของนักพัฒนาหลายคน แต่ก็ไม่ใช่เรื่องง่ายที่จะดูแลรักษา เนื่องจาก Jenkins ทำงานบนเซิร์ฟเวอร์และต้องใช้ทักษะบางอย่างในฐานะผู้ดูแลระบบเซิร์ฟเวอร์เพื่อติดตามกิจกรรมของมัน
- สาเหตุหนึ่งที่ทำให้คนจำนวนมากไม่ติดตั้ง Jenkins เนื่องมาจากความยากในการติดตั้งและกำหนดค่า Jenkins
- การผสานรวมอย่างต่อเนื่องมักขัดข้องเนื่องจากการเปลี่ยนแปลงการตั้งค่าเล็กๆ น้อยๆ การบูรณาการอย่างต่อเนื่องจะหยุดชั่วคราว ดังนั้นนักพัฒนาจึงต้องให้ความสนใจ
สรุป
- ในการบูรณาการอย่างต่อเนื่อง หลังจากที่คอมมิตโค้ดแล้ว ซอฟต์แวร์จะถูกสร้างขึ้นและทดสอบทันที
- Jenkins ใช้สำหรับเตรียมห่วงโซ่การดำเนินการเพื่อบูรณาการอย่างต่อเนื่องในโครงการซอฟต์แวร์
- ก่อนที่ Jenkins เมื่อ Developer ทุกคนทำงานเขียนโค้ดที่ได้รับมอบหมายเสร็จเรียบร้อยแล้ว พวกเขาเคยคอมมิตโค้ดทั้งหมดในเวลาเดียวกัน Later, สร้างได้รับการทดสอบและปรับใช้แล้ว
- หลังจาก Jenkins โค้ดจะถูกสร้างขึ้นและทดสอบทันทีที่ Developer คอมมิตโค้ด Jenkin จะสร้างและทดสอบโค้ดหลายครั้งในระหว่างวัน
- ตามค่าเริ่มต้น Jenkins จะมาพร้อมกับชุดคุณลักษณะที่จำกัด หากคุณต้องการรวมการติดตั้ง Jenkins เข้ากับเครื่องมือควบคุมเวอร์ชัน เช่น Git คุณจะต้องติดตั้งปลั๊กอินที่เกี่ยวข้องกับ Git ตรวจสอบด้วย สุดยอดเครื่องมือทางเลือกของเจนกินส์
- ข้อดีที่ยิ่งใหญ่ที่สุดของเจนกินส์คือมีการบริหารจัดการโดยชุมชนซึ่งจัดการประชุมสาธารณะและรับข้อมูลจากสาธารณะเพื่อพัฒนาโครงการของเจนกินส์
- ข้อเสียที่ใหญ่ที่สุดของ Jenkins ก็คืออินเทอร์เฟซของมันล้าสมัยและไม่เป็นมิตรกับผู้ใช้เมื่อเทียบกับแนวโน้ม UI ในปัจจุบัน หากคุณกำลังพิจารณาตัวเลือกอื่นๆ ที่อาจมอบประสบการณ์ผู้ใช้ที่ทันสมัยกว่านี้ คุณอาจต้องการสำรวจตัวเลือกบางส่วน เครื่องมือบูรณาการอย่างต่อเนื่องชั้นนำ ใช้ได้