CI/CD คืออะไร การบูรณาการอย่างต่อเนื่องและการส่งมอบอย่างต่อเนื่อง

การบูรณาการอย่างต่อเนื่อง (CI) คืออะไร?

การบูรณาการอย่างต่อเนื่อง เป็นวิธีการพัฒนาซอฟต์แวร์ที่สมาชิกในทีมบูรณาการงานของตนอย่างน้อยวันละครั้ง ในวิธีนี้ ทุกการรวมจะถูกตรวจสอบโดยบิลด์อัตโนมัติเพื่อตรวจจับข้อผิดพลาด แนวคิดนี้ถูกนำมาใช้ครั้งแรกเมื่อกว่าสองทศวรรษที่แล้วเพื่อหลีกเลี่ยง "นรกแห่งการบูรณาการ" ซึ่งเกิดขึ้นเมื่อการบูรณาการถูกเลื่อนออกไปจนกระทั่งสิ้นสุดโครงการ

ในการบูรณาการอย่างต่อเนื่องหลังจากการคอมมิตโค้ด ซอฟต์แวร์จะถูกสร้างขึ้นและทดสอบทันที ในโปรเจ็กต์ขนาดใหญ่ที่มีนักพัฒนาจำนวนมาก การคอมมิตจะเกิดขึ้นหลายครั้งในหนึ่งวัน ด้วยรหัสการคอมมิตแต่ละรายการจะถูกสร้างและทดสอบ หากผ่านการทดสอบ จะมีการทดสอบบิลด์สำหรับการปรับใช้ หากการปรับใช้สำเร็จ โค้ดจะถูกส่งไปยังเวอร์ชันที่ใช้งานจริง คอมมิต สร้าง ทดสอบ และปรับใช้นี้เป็นกระบวนการต่อเนื่อง และด้วยเหตุนี้จึงเป็นชื่อการรวม/ปรับใช้อย่างต่อเนื่อง

การจัดส่งแบบต่อเนื่อง (CD) คืออะไร?

การจัดส่งแบบต่อเนื่อง เป็นวิธีการทางวิศวกรรมซอฟต์แวร์ที่ทีมงานพัฒนาผลิตภัณฑ์ซอฟต์แวร์ในรอบสั้นๆ ช่วยให้มั่นใจได้ว่าสามารถเผยแพร่ซอฟต์แวร์ได้อย่างง่ายดายทุกเมื่อ จุดมุ่งหมายหลักของการส่งมอบอย่างต่อเนื่องคือการสร้าง ทดสอบ และเผยแพร่ซอฟต์แวร์ด้วยความเร็วและความถี่ที่ดี ช่วยให้คุณลดต้นทุน เวลา และความเสี่ยงในการส่งมอบการเปลี่ยนแปลงโดยอนุญาตให้มีการอัปเดตบ่อยครั้งในการผลิต

ความแตกต่างระหว่าง CI และซีดีคืออะไร?

CI กับซีดี: การบูรณาการอย่างต่อเนื่อง (CI) เป็นแนวทางในการทดสอบการเปลี่ยนแปลงแต่ละครั้งในโค้ดเบสโดยอัตโนมัติ ในขณะที่การจัดส่งแบบต่อเนื่อง (CD) เป็นแนวทางในการรับการเปลี่ยนแปลงคุณสมบัติใหม่ การกำหนดค่า และการแก้ไขจุดบกพร่อง

การพัฒนาโดยไม่มี CI กับการพัฒนาด้วย CI

ความแตกต่างที่สำคัญระหว่างการพัฒนาโดยใช้ CI หรือไม่มี CI มีดังนี้

การพัฒนาโดยไม่มี CI การพัฒนาด้วย CI
ข้อบกพร่องมากมาย ข้อบกพร่องน้อยลง
กระทำไม่บ่อยนัก กระทำปกติ
เผยแพร่ไม่บ่อยและช้า การเผยแพร่การทำงานปกติ
บูรณาการได้ยาก บูรณาการที่ง่ายและมีประสิทธิภาพ
การทดสอบเกิดขึ้นล่าช้า การทดสอบการรวมระบบอย่างต่อเนื่องเกิดขึ้นตั้งแต่เนิ่นๆ และบ่อยครั้ง
ปัญหาที่เกิดขึ้นแก้ไขได้ยากกว่า ค้นหาและแก้ไขปัญหาได้รวดเร็วและมีประสิทธิภาพยิ่งขึ้น
ทัศนวิสัยโครงการไม่ดี การมองเห็นโครงการที่ดีขึ้น

ความแตกต่างระหว่างการคอมไพล์และการรวมอย่างต่อเนื่อง

กิจกรรมบูรณาการอย่างต่อเนื่อง
กิจกรรมบูรณาการอย่างต่อเนื่อง

ในขณะที่การคอมไพล์จะคอมไพล์เฉพาะโค้ด CI จะดำเนินการดังต่อไปนี้

บูรณาการฐานข้อมูล

  • ตรวจสอบให้แน่ใจว่า DB และรหัสซิงค์กัน
  • การสร้างฐานข้อมูลและข้อมูลการทดสอบโดยอัตโนมัติ

การตรวจสอบรหัส

  • รับประกันว่าโค้ดเบสจะแข็งแรง
  • ระบุปัญหาตั้งแต่เนิ่นๆ และใช้แนวทางปฏิบัติที่ดีที่สุด

การปรับใช้อัตโนมัติ

  • ให้คุณปล่อยสินค้าได้ตลอดเวลา
  • สถานะสามารถสาธิตได้อย่างต่อเนื่องและใช้งานได้กับทุกเครื่อง

การสร้างเอกสาร

  • ตรวจสอบให้แน่ใจว่าเอกสารเป็นปัจจุบัน
  • ลบการเบิร์นจากนักพัฒนา
  • สร้างรายงานการสร้างและตัวชี้วัด

การรวบรวม

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

ฉันจะสร้างเมื่อไหร่?

  • ในการเช็คอินทุกครั้ง
  • ทุกครั้งที่การพึ่งพาเปลี่ยนแปลง

การบูรณาการอย่างต่อเนื่องมีขั้นตอนอะไรบ้าง?

กระบวนการซีไอ
กระบวนการซีไอไอ
  • ตามหลักการแล้ว บิลด์ควรมาจากบรรทัดคำสั่ง และไม่ควรขึ้นอยู่กับสภาพแวดล้อมการพัฒนาแบบรวม (IDE)
  • บิลด์ควรเกิดขึ้นอย่างต่อเนื่องโดยใช้เซิร์ฟเวอร์ Cl เฉพาะ ไม่ใช่งาน cron
  • CI ที่สร้างขึ้นควรถูกทริกเกอร์ทุกครั้งที่เช็คอิน ไม่ใช่แค่ตอนเที่ยงคืนเท่านั้น
  • โครงสร้างควรให้ข้อเสนอแนะทันทีและไม่ต้องใช้ความพยายามของนักพัฒนา
  • ระบุตัวชี้วัดหลักและติดตามด้วยภาพ ที่สำคัญกว่านั้นคือดำเนินการกับพวกเขาทันที

คุณต้องทำอะไรเพื่อดำเนินกระบวนการ CI?

ดำเนินกระบวนการ CI

ต่อไปนี้เป็นองค์ประกอบสำคัญที่คุณต้องดำเนินการตามกระบวนการ CI ทั้งหมด:

  • ระบบควบคุมเวอร์ชัน (VCS): โดยเสนอวิธีการที่เชื่อถือได้เพื่อรวมศูนย์และรักษาการเปลี่ยนแปลงที่ทำกับโปรเจ็กต์ของคุณเมื่อเวลาผ่านไป
  • เครื่องเสมือน: คุณควรมีเซิร์ฟเวอร์สำรองหรืออย่างน้อยหนึ่งเซิร์ฟเวอร์ เครื่องเสมือน เพื่อสร้างระบบของคุณ
  • โซลูชันเครื่องมือ CI ที่โฮสต์: เพื่อหลีกเลี่ยงเซิร์ฟเวอร์หรือเครื่องเสมือน คุณควรเลือกใช้โซลูชันเครื่องมือ CI ที่โฮสต์ เครื่องมือนี้ช่วยในการบำรุงรักษากระบวนการทั้งหมดและให้ความสามารถในการปรับขนาดได้ง่ายขึ้น
  • เครื่องมือ: หากคุณเลือกเวอร์ชันที่โฮสต์เอง คุณจะต้องติดตั้งเวอร์ชันใดเวอร์ชันหนึ่งจากหลายเวอร์ชัน เครื่องมือ CI เช่นเดียวกับเจนกินส์ TeamCity, Bamboo, GitLab ฯลฯ

การบูรณาการอย่างต่อเนื่องทำงานอย่างไร

คุณคงทราบถึงโทรศัพท์ Nokia รุ่นเก่าอย่างแน่นอน Nokia เคยใช้กระบวนการที่เรียกว่า nightly build หลังจากมีการคอมมิตหลายครั้งจากนักพัฒนาที่หลากหลายในระหว่างวัน ซอฟต์แวร์ก็ถูกสร้างขึ้นทุกคืน เนื่องจากซอฟต์แวร์ถูกสร้างขึ้นเพียงวันละครั้ง การแยก ระบุ และแก้ไขข้อผิดพลาดในโค้ดเบสขนาดใหญ่จึงเป็นเรื่องยากลำบากมาก

Laterพวกเขานำแนวทางบูรณาการอย่างต่อเนื่องมาใช้ ซอฟต์แวร์ถูกสร้างขึ้นและทดสอบทันทีที่นักพัฒนายอมรับโค้ด หากตรวจพบข้อผิดพลาด นักพัฒนาที่เกี่ยวข้องจะสามารถแก้ไขข้อบกพร่องได้อย่างรวดเร็ว

ตัวอย่างของการบูรณาการอย่างต่อเนื่อง
ตัวอย่างของการบูรณาการอย่างต่อเนื่อง

คุณสมบัติของซีไอ

นี่คือคุณสมบัติที่สำคัญและคุณประโยชน์ของการบูรณาการอย่างต่อเนื่อง:

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

ทำไมต้องใช้ CI?

ต่อไปนี้เป็นเหตุผลสำคัญในการใช้การผสานรวมแบบต่อเนื่อง:

  • ช่วยให้คุณสร้างซอฟต์แวร์ที่มีคุณภาพดีขึ้น
  • กระบวนการ CI ช่วยเพิ่มจำนวนพนักงานและผลงานการส่งมอบของทีมวิศวกร
  • CI ช่วยให้นักพัฒนาซอฟต์แวร์ทำงานได้อย่างอิสระบนฟีเจอร์ต่างๆ แบบคู่ขนาน
  • ช่วยให้คุณทำการทดสอบซ้ำได้
  • เพิ่มการมองเห็นทำให้มีการสื่อสารมากขึ้น
  • ช่วยพัฒนาผลิตภัณฑ์ที่อาจจัดส่งได้สำหรับการสร้างอัตโนมัติเต็มรูปแบบ
  • ช่วยคุณลดความเสี่ยงโดยทำให้การปรับใช้งานเร็วขึ้นและคาดการณ์ได้มากขึ้น
  • ข้อเสนอแนะทันทีเมื่อปัญหามาถึง
  • หลีกเลี่ยงความสับสนในนาทีสุดท้ายเกี่ยวกับวันและเวลาวางจำหน่าย

แนวทางปฏิบัติที่ดีที่สุดในการใช้ระบบ CI

แนวทางปฏิบัติที่ดีที่สุดที่สำคัญบางส่วนขณะนำไปใช้มีดังนี้

  • กระทำตั้งแต่เนิ่นๆ และกระทำมักจะไม่กระทำการโค้ดที่เสียหาย
  • แก้ไขความล้มเหลวของการสร้างทันที
  • ดำเนินการกับตัวชี้วัด
  • สร้างในทุกสภาพแวดล้อมเป้าหมาย สร้างสิ่งประดิษฐ์จากทุกบิลด์
  • การสร้างซอฟต์แวร์จำเป็นต้องดำเนินการในลักษณะเพื่อให้สามารถทำงานอัตโนมัติได้
  • ไม่ต้องพึ่ง IDE
  • สร้างและทดสอบทุกสิ่งเมื่อมีการเปลี่ยนแปลง
  • สคีมาฐานข้อมูลนับเป็นทุกอย่าง
  • ช่วยให้คุณค้นหาตัวชี้วัดที่สำคัญและติดตามตัวชี้วัดเหล่านั้นด้วยภาพ
  • เช็คอินบ่อยและเร็ว
  • การควบคุมโค้ดต้นฉบับที่แข็งแกร่งยิ่งขึ้น
  • การบูรณาการอย่างต่อเนื่องกำลังทำการทดสอบหน่วยทุกครั้งที่คุณคอมมิตโค้ด
  • สร้างและทดสอบอัตโนมัติทุกคน
  • รักษาบิลด์ให้รวดเร็วด้วยการปรับใช้อัตโนมัติ

ข้อเสียของซีไอ

นี่คือข้อเสีย/ข้อเสียของกระบวนการบูรณาการอย่างต่อเนื่อง:

  • ต้องใช้เวลาตั้งค่าเริ่มต้นและการฝึกอบรมเพื่อทำความคุ้นเคยกับเซิร์ฟเวอร์ Cl
  • การพัฒนาขั้นตอนการทดสอบที่เหมาะสมถือเป็นสิ่งสำคัญ
  • ชุดทดสอบที่ได้รับการพัฒนาอย่างดีจำเป็นต้องใช้ทรัพยากรจำนวนมากสำหรับเซิร์ฟเวอร์ Cl
  • การแปลงกระบวนการที่คุ้นเคย
  • ต้องมีเซิร์ฟเวอร์และสภาพแวดล้อมเพิ่มเติม
  • เวลารออาจเกิดขึ้นเมื่อนักพัฒนาหลายคนต้องการรวมโค้ดของตนในเวลาเดียวกัน

เครื่องมือสำหรับกระบวนการ CI

นี่คือเครื่องมือ CI/CD ที่สำคัญที่สุดบางส่วน:

เจนกิ้นส์

เจนกิ้นส์

เจนกิ้นส์ เป็นซอฟต์แวร์บูรณาการโอเพ่นซอร์สอย่างต่อเนื่อง มันเขียนโดยใช้ Java ภาษาโปรแกรม- ช่วยให้การทดสอบแบบเรียลไทม์และการรายงานเกี่ยวกับการเปลี่ยนแปลงแบบแยกส่วนในโค้ดเบสขนาดใหญ่ยิ่งขึ้น ซอฟต์แวร์นี้ช่วยให้นักพัฒนาสามารถค้นหาและแก้ไขข้อบกพร่องในโค้ดเบสได้อย่างรวดเร็ว และทำการทดสอบบิลด์โดยอัตโนมัติ

Bamboo

Bamboo

Bamboo เป็นเซิร์ฟเวอร์สร้างแบบบูรณาการต่อเนื่องที่สามารถสร้าง ทดสอบ และเผยแพร่โดยอัตโนมัติในที่เดียว ทำงานร่วมกับซอฟต์แวร์ JIRA และ Bitbucket ได้อย่างราบรื่น Bamboo รองรับภาษาและเทคโนโลยีมากมาย เช่น CodeDeply, Docker, Git, SVN, Mercurial, AWS และ Amazon ถัง S3

TeamCity

TeamCity

TeamCity เป็นเซิร์ฟเวอร์ Continuous Integration ที่รองรับฟีเจอร์อันทรงพลังมากมาย ช่วยรักษาเซิร์ฟเวอร์ CI ให้มีสุขภาพดีและเสถียรแม้จะไม่มีการสร้างใดๆ เกิดขึ้นก็ตาม ช่วยให้คุณภาพของโค้ดดีขึ้นสำหรับโครงการใดๆ

สรุป

  • คำนิยามการรวมอย่างต่อเนื่อง: การรวมอย่างต่อเนื่องเป็นวิธีการพัฒนาซอฟต์แวร์ที่สมาชิกในทีมสามารถรวมงานของตนได้อย่างน้อยวันละครั้ง
  • CI/CD หมายถึงการรวมกันของการบูรณาการอย่างต่อเนื่องและการส่งมอบอย่างต่อเนื่องหรือการปรับใช้อย่างต่อเนื่อง
  • การพัฒนาโดยไม่มี CI ทำให้เกิดข้อบกพร่องมากมาย ในขณะที่การพัฒนาด้วย CI ทำให้เกิดข้อบกพร่องน้อยกว่า
  • กิจกรรมสำคัญของการบูรณาการอย่างต่อเนื่อง ได้แก่ 1) การบูรณาการฐานข้อมูล 2) การตรวจสอบรหัส 3) การปรับใช้อัตโนมัติ การสร้างเอกสาร และการคอมไพล์
  • บิลด์ควรเกิดขึ้นอย่างต่อเนื่องโดยใช้เซิร์ฟเวอร์ Cl เฉพาะ ไม่ใช่งาน cron
  • องค์ประกอบที่สำคัญของ CI คือ 1) ระบบควบคุมเวอร์ชัน 2) เครื่องเสมือน 3) โซลูชันเครื่องมือโฮสต์ CI 4) เครื่องมือ
  • ระบบการรวมอย่างต่อเนื่องช่วยให้คุณรักษาแหล่งเก็บข้อมูลเพียงแหล่งเดียวได้
  • กระบวนการ CI/CD ช่วยให้คุณสร้างซอฟต์แวร์ที่มีคุณภาพดีขึ้น
  • แนวทางปฏิบัติที่ดีที่สุดที่สำคัญที่สุดของ Azure กระบวนการบูรณาการอย่างต่อเนื่องคือการยืนยันอย่างรวดเร็วและยืนยันบ่อยครั้ง ไม่เคยยืนยันโค้ดที่มีปัญหา
  • ข้อเสียเปรียบที่สำคัญของ ไปป์ไลน์ CI/CD กระบวนการคือชุดทดสอบที่ได้รับการพัฒนาอย่างดีต้องการทรัพยากรจำนวนมากสำหรับเซิร์ฟเวอร์ Cl
  • เจนกินส์ Bambook และ Team City มีประโยชน์บางอย่างใน AWS Continuous เครื่องมือบูรณาการ.