“บูรณาการอย่างต่อเนื่องคืออะไร”
มาดูสิ่งที่ Wikiบอกเราเกี่ยวกับคำถามนี้: การบูรณาการอย่างต่อเนื่อง (CI, English Continuous Integration) คือแนวทางปฏิบัติในการพัฒนาซอฟต์แวร์ที่ประกอบด้วยการรวมสำเนาการทำงานเข้ากับสาขาการพัฒนาหลักทั่วไปหลายครั้งต่อวันและดำเนินการสร้างอัตโนมัติบ่อยครั้งของโครงการในช่วงต้น การตรวจจับข้อบกพร่องที่อาจเกิดขึ้นและแนวทางแก้ไขปัญหาการรวมระบบ น่ากลัวใช่มั้ยล่ะ? ลองอธิบายคำนี้ด้วยคำง่ายๆ กัน: การบูรณาการอย่างต่อเนื่องคือระบบสำหรับการสร้างและการทดสอบซอฟต์แวร์อัตโนมัติด้วยการกำหนดค่าบางอย่างบนเครื่องบางเครื่องเพื่อตรวจจับจุดบกพร่องและความไม่เข้ากัน โอเค ไม่มีปัญหา เราคิดออกแล้ว แต่เกิดคำถามเชิงตรรกะต่อไปนี้:ทำไมเราต้องมี CI?
สมมติว่าคุณกำลังเขียนโปรเจ็กต์ขนาดใหญ่ และจำเป็นต้องเพิ่ม/เปลี่ยนแปลงฟังก์ชันการทำงาน คุณเขียน เขียนการทดสอบ เปิดใช้งานได้สำเร็จ และดูเหมือนว่าทุกอย่างจะเรียบร้อยดี แต่ก็ไม่ มีสถานการณ์ที่การเปลี่ยนแปลงในฟังก์ชันหนึ่งส่งผลต่ออีกฟังก์ชันหนึ่ง อีกหนึ่งฟังก์ชันในฟังก์ชันที่สาม และต่อๆ ไป จนกว่าข้อบกพร่องจะหลุดลอยไปที่ไหนสักแห่งและมีข้อผิดพลาดเกิดขึ้น ใช่ คุณสามารถพูดได้ว่านี่น่าจะเป็นโครงการที่ออกแบบมาไม่ดี และคุณอาจจะพูดถูก แต่ถ้าไม่เป็นเช่นนั้น และการเชื่อมต่อเหล่านี้ควรจะอยู่ที่นั่นจริงๆ แล้วถ้าคุณเขียนและสร้างโปรเจ็กต์มากกว่าหนึ่งครั้ง ซึ่งมักจะเป็นเช่นนั้นล่ะ? คุณได้ทดสอบฟังก์ชันการทำงานที่เพิ่งเขียนใหม่ และผลลัพธ์ก็ให้ผลลัพธ์ที่เป็นบวก คุณตัดสินใจอย่างรวดเร็ว จากนั้นก็ผลักดันไปที่ไหนสักแห่งและคิดอยู่แล้วว่าคุณจะสูบซิการ์ที่บ้านพร้อมดื่มวิสกี้ราคาแพงไปด้วยได้อย่างไร แต่ไม่ใช่ อนิจจา เพื่อนร่วมงานของคุณหรือเจ้านาย ไม่ว่าใครก็ตามที่บอกว่าเพราะการกระทำของคุณ ทำให้บิลด์ทั้งหมดพัง คุณพูดด้วยความงุนงงว่าคุณเป็นโปรแกรมเมอร์คุณได้ทดสอบทุกอย่างแล้ว แต่บ่อยครั้งที่ไม่มีเวลาที่จะทดสอบทั้งโปรเจ็กต์อย่างต่อเนื่อง และคุณทดสอบเฉพาะส่วนของโค้ดที่คุณทำการเปลี่ยนแปลงเท่านั้น ไม่ใช่ทั้งแอสเซมบลีโดยรวม นี่คือจุดที่ CI มาช่วยเหลือเรา ในการพุชไปยังทรัพยากรใดๆ แต่ละครั้ง CI จะสร้างโปรเจ็กต์ของคุณตั้งแต่เริ่มต้น รัน การทดสอบ ทั้งหมดและเฉพาะในกรณีที่การทดสอบทั้งหมดผ่านและสร้างโปรเจ็กต์แล้ว บิวด์จะได้รับสถานะผ่าน มิฉะนั้นคุณจะมีโอกาสที่จะกลับมาและดูว่าเกิดอะไรขึ้น ถึงเวลาถามคำถามว่า"ทำไมถึงเป็นเช่นนี้" และดูการใช้งานซอฟต์แวร์ ตัวอย่าง ตามที่ฉันได้กล่าวไปแล้ว บทความนี้มีไว้สำหรับผู้ที่คุ้นเคยกับ Maven และ Git ดังนั้นฉันหวังว่าคุณจะรู้ว่าฉันทำอะไรและอย่างไรนอกเหนือจากการตั้งค่า CI ฯลฯ-
ขั้นแรก เรามาสร้างโปรเจ็กต์ทดสอบ Maven ง่ายๆ และสร้างคลาสในนั้นที่พิมพ์ว่า "Hello World!" และดำเนินการง่ายๆ และมาเขียนการทดสอบที่ง่ายที่สุดสำหรับคลาสนี้กัน
ด้วยเหตุนี้ เราจึงควรมีโครงสร้างโครงการดั้งเดิม:
แหล่งที่มาทั้งหมดจะอยู่ใน GitHub ของฉัน ไม่สำคัญว่าคุณเขียนอะไรใน Main และจะมีการทดสอบอะไรบ้าง
-
เราผลักดันโครงการของเราไปที่ GitHub
-
ตอนนี้ส่วนที่สนุกมา จาก CI ฉันเลือกTravis CIเนื่องจากความพร้อมใช้งานและความน่าเชื่อถือ Travis ใช้ GitHub เพื่อโฮสต์ซอร์สโค้ด
ไปที่ เว็บไซต์ Travis CIและเข้าสู่ระบบผ่าน GitHub ในโปรไฟล์เราเชื่อมต่อโครงการของเรา:
ทุกอย่างพร้อมสำหรับการประกอบทุกครั้งที่กด แต่คำถามคือ จะประกอบอย่างไร ?
-
เรากลับไปสู่ IDEA ที่เรารักและสร้าง ไฟล์ .travis.yml
ไฟล์นี้รับผิดชอบการกำหนดค่าบิลด์ Travis มาดูการตั้งค่ายอดนิยมกัน:
- คุณต้องระบุภาษาที่ใช้ในโครงการ
- ระบุเส้นทางไปยังไดเร็กทอรีเพื่อทำให้ build เร็วขึ้น
- ระบุวิธีการแจ้งการประกอบสำเร็จหรือไม่สำเร็จ
นี่คือลักษณะของการกำหนดค่า Travis ทั่วไป:
# https://docs.travis-ci.com/user/languages/java/ language: java jdk: oraclejdk9 # Improve Build Speed https://dzone.com/articles/travis-ci-tutorial-java-projects cache: directories: - $HOME/.m2 # Notifications https://docs.travis-ci.com/user/notifications/ notifications: email: recipients: - qThegamEp@gmail.com on_success: always # default: change on_failure: always # default: always
ฉันได้เพิ่มความคิดเห็นพร้อมลิงก์เพื่อความชัดเจน
-
เราผลักดันไปที่ GitHub อีกครั้งแล้วเปิด เว็บไซต์ Travisเลือกโปรเจ็กต์และตรวจสอบบิลด์ ด้วยเหตุนี้ เราจึงได้รับการแจ้งเตือนเกี่ยวกับการสร้างที่ประสบความสำเร็จ:
นอกจากนี้ บนเว็บไซต์ เรายังเห็นป้ายแสดงความสำเร็จในการประกอบโครงการของเรา ซึ่งเราสามารถแทรกลงใน README.md ของเรา:
-
โครงการทดสอบของฉันซึ่งคุณสามารถดู/ดาวน์โหลดได้หากคุณไม่เข้าใจอะไรบางอย่าง
-
ที่จริงแล้ว เป็น เว็บไซต์ Travis CIนั่นเอง
-
บทช่วยสอนบนเว็บไซต์อย่างเป็นทางการเกี่ยวกับการตั้งค่าและใช้งาน Travis CI
-
วิดีโอที่ดี;
- บทช่วยสอนอื่น;
GO TO FULL VERSION