Continous Integration (CI) คืออะไรและมีประโยชน์อย่างไร [ปิด]


11

บางคนสามารถอธิบายแนวคิดของการบูรณาการอย่างต่อเนื่องกับฉันได้อย่างไรมันทำงานอย่างไรในวิธีที่เข้าใจง่าย และทำไม บริษัท จึงควรใช้ CI ในขั้นตอนการจัดส่งโค้ด ฉันเป็นนักพัฒนาและ บริษัท ของฉัน (ส่วนใหญ่เป็นทีมงานสร้าง) ใช้ Team City ในฐานะนักพัฒนาฉันทำการเช็คเอาต์อัปเดตและส่งมอบรหัสให้กับ SVN แต่ไม่จำเป็นต้องกังวลเกี่ยวกับ TeamCity หรือ CI โดยทั่วไป ดังนั้นฉันอยากจะเข้าใจว่า CI มีประโยชน์อย่างไร? CI เป็นส่วนหนึ่งของระเบียบวิธี Agile หรือไม่?


1
วิดีโอ youtube นี้แสดงถึงแนวคิด: youtube.com/watch?v=4sANX9AhM8c
lwm

Martin Fowler มีบทความที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้
marco-fiset

คำตอบ:


18

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

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

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

CI มักจะเกี่ยวข้องกับวิธีการ Agile แต่ฉันไม่รู้ประวัติส่วนตัวของ CI


1
เกี่ยวกับประโยคสุดท้าย: ในขณะที่ CI มักจะเกี่ยวข้องกับ Agile ฉันขอยืนยันว่าการพัฒนาที่ไม่คล่องตัว (ใช่ยังคงเกิดขึ้น ;-)) ยังสามารถได้รับประโยชน์อย่างมากจาก CI ที่ได้รับการใช้งานอย่างดี
Joachim Sauer

@Joachim ถูกต้อง
Patkos Csaba

@ โจอาคิมซาวเออร์: ฉันจะบอกว่า CI เป็นสิ่งที่ทำให้โครงการมีความคล่องตัวมากขึ้นว่าจะไม่มีมัน
Michael Borgwardt

3

การรวมอย่างต่อเนื่องหมายถึง: การรวมรหัสในผลิตภัณฑ์ที่ทำงานจริงและสามารถทดสอบเกิดขึ้นได้ตลอดเวลาไม่ใช่กิจกรรมที่แยกต่างหากในวงจรการพัฒนา

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

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

หากไม่มี CI ข้อผิดพลาดเหล่านี้จะปรากฏขึ้นพร้อมกันในระหว่างขั้นตอนการรวมระบบซึ่งทำให้แก้ไขได้ยากมาก


2

คุณอาจมีบางรูปแบบในการพัฒนา: คุณชำระเงิน, รหัส, รวบรวมตรวจสอบคำสาปเปลี่ยนแปลงรวบรวมเชียร์กระทำ คุณยอมรับรหัสที่ใช้งานได้แม้ในรูปแบบละเอียดน้อยลงเช่นเมื่อสิ้นสุดวันทำงานหรือเมื่อคุณสมบัติเสร็จสมบูรณ์ คุณตรวจสอบการอ้างอิงของคุณทุกครั้งที่คุณนำเข้าห้องสมุด API

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

ดังนั้นเมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงทั้งสองโครงการควรสร้างและทดสอบร่วมกันเช่นทำงานกับ API ของกันและกันสร้างและทดสอบด้วยไลบรารีใหม่ ฯลฯ การทดสอบดังกล่าวรหัสของคุณและของคนอื่นเรียกว่าการทดสอบการรวม

ทำไมต่อเนื่อง เพราะมันง่ายกว่าที่จะมอบหมายการประสานงานของการรวมเข้ากับระบบที่ทดสอบการสร้างที่สะอาดเมื่อใดก็ตามที่มีการเปลี่ยนแปลงในรหัสฐานทั้งสองมากกว่าที่จะจัดระเบียบทั้งหมดสำหรับมนุษย์ ระบบสามารถปรับขนาดได้


1

มีสองด้านในการรวมอย่างต่อเนื่อง

  1. กลยุทธ์การควบคุมแหล่งที่มาของการพัฒนาทำให้มั่นใจได้ว่านักพัฒนาสามารถรวมงานที่กำลังดำเนินอยู่กับโค้ดที่เสถียรของนักพัฒนาอื่น ๆ
  2. การสร้างและทดสอบซอร์สโค้ดอัตโนมัติที่เกิดจากการคอมมิตไปยังคอนโทรลแหล่งที่มา

จุดที่ 1 มีความสำคัญ เป็นการย้ายเพื่อให้เกิดการรวมที่ผู้พัฒนาดำเนินการเป็นประจำและในลักษณะที่ทำให้การรวมมีโอกาสประสบความสำเร็จมากขึ้น

จุดที่ 2 เป็นเครื่องมือและกรอบงานที่จำเป็นเพื่อให้จุดที่ 1 เกิดขึ้นอย่างปลอดภัยระบุการผสานที่ล้มเหลวโดยการทำลายรหัสที่มีอยู่อย่างรวดเร็ว

มันมีประโยชน์อย่างไร?

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

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


0

CI มีประโยชน์เมื่อคุณ:

  • การรวบรวมรหัส
  • ชุดการทดสอบจริง
  • รายงานที่ขึ้นอยู่กับซอร์สโค้ดของคุณ (การครอบคลุมโค้ดความรุนแรงของมาตรฐานรหัส ฯลฯ )
  • งานประจำที่คุณทำเป็นระยะ ๆ หลังจากรวบรวมรหัสสำเร็จ

รายการสามารถดำเนินการต่อ ..

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