ในโลกการพัฒนาซอฟต์แวร์ที่บริการ continuous integration (CI) บนคลาวด์ครองตลาด ส่วนขยายใหม่สำหรับ GitHub CLI ที่มีชื่อว่า gh-signoff ได้ปรากฏตัวขึ้น ท้าทายความเชื่อดั้งเดิมเกี่ยวกับการทดสอบอัตโนมัติ เครื่องมือนี้พัฒนาโดย Basecamp อนุญาตให้นักพัฒนาสามารถรันการทดสอบในเครื่องของตนเองและรับรองงานด้วยตนเอง สร้างสถานะการตรวจสอบที่ผ่านโดยไม่ต้องใช้ตัวประมวลผล CI ระยะไกล
CI แบบโลคอลกับแบบคลาวด์: ชุมชนที่แบ่งแยก
การเปิดตัวของ gh-signoff ได้จุดประเด็นถกเถียงอย่างมากในชุมชนนักพัฒนา ฝ่ายสนับสนุนโต้แย้งว่าเครื่องคอมพิวเตอร์ของนักพัฒนาในปัจจุบันมีประสิทธิภาพเพียงพอที่จะจัดการภาระงานการทดสอบที่เคยต้องใช้โครงสร้างพื้นฐานบนคลาวด์ ตามที่คำอธิบายของส่วนขยายระบุว่า แล็ปท็อปของนักพัฒนาในปัจจุบันเร็วมาก พวกมันถูกใช้งานน้อยกว่าที่ควร และคุณก็เป็นเจ้าของมันอยู่แล้ว บริการ CI บนคลาวด์มักจะช้า แพง และต้องเช่าใช้
อย่างไรก็ตาม นักพัฒนาจำนวนมากแสดงความกังวลอย่างจริงจังเกี่ยวกับแนวทางนี้ คำวิจารณ์หลักมุ่งเน้นไปที่การทำซ้ำได้และความน่าเชื่อถือ ผู้แสดงความคิดเห็นรายหนึ่งสังเกตว่าเครื่องมือนี้เพียงแค่สร้างสถานะที่ผ่านในที่เก็บโค้ดโดยไม่มีการตรวจสอบว่าการทดสอบได้ถูกรันจริงๆ:
นี่เพียงแค่สร้างสถานะที่ผ่านในที่เก็บโค้ดเพื่อให้ PR สามารถถูกรวมได้ ไม่มีข้อผูกมัดใดๆ ให้นักพัฒนาต้องรันการทดสอบในเครื่องจริงๆ ดังนั้นคุณอาจประหยัดเวลาด้วยการปิดการตรวจสอบสถานะไปเลย
นี่แสดงให้เห็นถึงความตึงเครียดพื้นฐานระหว่างความไว้วางใจและการตรวจสอบในกระบวนการพัฒนาซอฟต์แวร์
ปัจจัยด้านความไว้วางใจในทีมพัฒนา
แนวทางของ gh-signoff สร้างขึ้นบนพื้นฐานของความไว้วางใจภายในทีมพัฒนา ผู้สนับสนุนเครื่องมือนี้ชี้ให้เห็นว่าแม้แต่กับ CI แบบดั้งเดิม นักพัฒนาที่ตั้งใจจะหลีกเลี่ยงการตรวจสอบก็สามารถทำได้โดยการแก้ไขโค้ดทดสอบ พวกเขาโต้แย้งว่าการทำให้กระบวนการรับรองชัดเจนจะสร้างความรับผิดชอบ
ผู้วิจารณ์โต้กลับว่าปัญหาไม่ได้เกี่ยวกับความไว้วางใจแต่เป็นความผิดพลาดของมนุษย์ ตามที่นักพัฒนาที่มีประสบการณ์มากกว่า 25 ปีอธิบายว่า แม้แต่นักพัฒนาที่ระมัดระวังที่สุดก็ยังทำผิดพลาดได้—ลืมลบข้อความดีบัก อัปเดตการจัดการข้อยกเว้น หรือตรวจสอบความเข้ากันได้ข้ามแพลตฟอร์ม การรันการสร้างบนเครื่องแยกต่างหากช่วยให้จับข้อผิดพลาดเหล่านี้ได้โดยไม่คำนึงถึงความตั้งใจหรือความใส่ใจของนักพัฒนา
ความกังวลเรื่องการแยกและความสม่ำเสมอของสภาพแวดล้อม
ผู้แสดงความคิดเห็นหลายคนเน้นย้ำว่าคุณค่าของ CI มาจากการให้สภาพแวดล้อมที่สม่ำเสมอและแยกออกจากกัน เมื่อการทดสอบรันบนเครื่องของนักพัฒนา พวกมันอาจผ่านเนื่องจากการขึ้นต่อกันหรือการกำหนดค่าเฉพาะในสภาพแวดล้อมนั้น—นำไปสู่ปัญหาคลาสสิก ทำงานบนเครื่องของฉัน นักพัฒนาหลายคนแนะนำว่าหากต้องการการดำเนินการในเครื่อง การใช้คอนเทนเนอร์หรือเครื่องเสมือนจะจำเป็นเพื่อให้แน่ใจว่าสภาพแวดล้อมมีความสม่ำเสมอ
สำหรับองค์กรที่ทำงานกับระบบที่ซับซ้อนซึ่งต้องการการทดสอบข้ามหลายระบบปฏิบัติการหรือการกำหนดค่าฮาร์ดแวร์ CI แบบโลคอลจะยิ่งไม่สามารถปฏิบัติได้จริง ตามที่นักพัฒนาของ PyTorch รายหนึ่งสังเกต CI บนคลาวด์ให้การทำงานแบบขนานและความหลากหลายของสภาพแวดล้อมที่จำเป็นซึ่งเป็นไปไม่ได้ที่จะจำลองในเครื่อง
การแลกเปลี่ยนระหว่างต้นทุนกับการควบคุม
ด้านการเงินของ CI ไม่สามารถมองข้ามได้ เมื่อองค์กรเติบโตขึ้น ต้นทุน CI บนคลาวด์สามารถสูงขึ้นอย่างมาก ผู้แสดงความคิดเห็นรายหนึ่งสังเกตว่า เมื่อองค์กรด้านวิศวกรรมของคุณเติบโตถึงขนาดหนึ่ง คุณอาจต้องใช้จ่ายเงินจำนวนมากสำหรับการประมวลผล CI แนวทางของ gh-signoff มีศักยภาพที่จะประหยัดต้นทุนอย่างมีนัยสำคัญโดยใช้ประโยชน์จากฮาร์ดแวร์ของนักพัฒนาที่มีอยู่แล้ว
อย่างไรก็ตาม นี่มาพร้อมกับการแลกเปลี่ยนในด้านความสามารถในการตรวจสอบและการปฏิบัติตามข้อกำหนด ผู้แสดงความคิดเห็นหลายคนชี้ให้เห็นว่าระบบ CI แบบรวมศูนย์ให้หลักฐานที่บันทึกไว้ของกระบวนการทดสอบ—ซึ่งสำคัญเป็นพิเศษสำหรับองค์กรที่อยู่ภายใต้การตรวจสอบหรือข้อกำหนดด้านกฎระเบียบ
เครื่องมือ gh-signoff แสดงถึงการทดลองที่น่าสนใจในการคิดใหม่เกี่ยวกับเวิร์กโฟลว์การพัฒนา แต่ฉันทามติของชุมชนบ่งชี้ว่ามันน่าจะเหมาะสมที่สุดสำหรับทีมขนาดเล็กที่มีความไว้วางใจสูง แอปพลิเคชันที่เรียบง่าย และมีข้อกำหนดด้านการปฏิบัติตามน้อย สำหรับองค์กรส่วนใหญ่ โดยเฉพาะองค์กรขนาดใหญ่ ระบบ CI แบบดั้งเดิมยังคงให้ประโยชน์ที่มากกว่าต้นทุน
อ้างอิง: gh-signoff