เจนกินส์คืออะไร? เหตุใดจึงใช้เครื่องมือการผสานรวมอย่างต่อเนื่อง (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 ในปัจจุบัน หากคุณกำลังพิจารณาตัวเลือกอื่นๆ ที่อาจมอบประสบการณ์ผู้ใช้ที่ทันสมัยกว่านี้ คุณอาจต้องการสำรวจตัวเลือกบางส่วน เครื่องมือบูรณาการอย่างต่อเนื่องชั้นนำ ใช้ได้