นักพัฒนาประสบปัญหากับเครื่องมือทดสอบ GitHub Actions แบบโลคอล แม้จะมีสัญญาว่าจะให้ผลตอบรับเร็วขึ้น

BigGo Editorial Team
นักพัฒนาประสบปัญหากับเครื่องมือทดสอบ GitHub Actions แบบโลคอล แม้จะมีสัญญาว่าจะให้ผลตอบรับเร็วขึ้น

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

Act ถูกออกแบบมาด้วยเป้าหมายหลักสองประการ: การให้ผลตอบรับอย่างรวดเร็วสำหรับการเปลี่ยนแปลงเวิร์กโฟลว์ของ GitHub Actions โดยไม่ต้องคอมมิตและพุช และการทำหน้าที่เป็นตัวรันงานในเครื่องโลคอล เครื่องมือนี้ทำงานโดยอ่านไฟล์เวิร์กโฟลว์จากไดเรกทอรี .github/workflows/ ใช้ Docker เพื่อดึงหรือสร้างอิมเมจที่จำเป็น และจากนั้นดำเนินการแอคชันในคอนเทนเนอร์ที่กำหนดค่าให้ตรงกับสภาพแวดล้อมของ GitHub

ปัญหาความเข้ากันได้ของแพลตฟอร์ม

ผู้ใช้ที่พยายามรัน Act บนสถาปัตยกรรมฮาร์ดแวร์ที่แตกต่างกันเผชิญกับอุปสรรคที่สำคัญ นักพัฒนาคนหนึ่งรายงานว่าล้มเหลวอย่างต่อเนื่องเมื่อพยายามดีบักปัญหา CI บนแมคซีรีส์ M ซึ่งเน้นให้เห็นถึงความไม่ตรงกันของแพลตฟอร์มระหว่างสภาพแวดล้อมโลคอลและตัวรัน CI แม้แต่การใช้อิมเมจเฉพาะทางเช่นจาก catthehacker - ซึ่งตามรายงานใช้พื้นที่มากกว่า 60GB เมื่อไม่ได้บีบอัด - ก็ไม่สามารถแก้ไขปัญหาความเข้ากันได้

เพิ่งสัปดาห์นี้เองผมลองให้โอกาสมันอีกครั้งเพื่อดีบักความล้มเหลวแปลกๆ ของ CI สำหรับการทดสอบ ruby ผมใช้แมคซีรีส์ M ดังนั้นจึงมีความไม่ตรงกันของแพลตฟอร์มโดยธรรมชาติ... ผมไม่เคยสามารถทำให้มันทำงานได้เลยนอกจากขั้นตอน dry-run

ปัญหาความเข้ากันได้ของแพลตฟอร์มขยายไปไกลกว่าแค่ Apple Silicon โดยมีข้อจำกัดสำคัญอีกอย่างคือ Act ไม่รองรับ Podman ซึ่งเป็นเอนจินคอนเทนเนอร์ทางเลือก ผู้ใช้รายงานว่าความพยายามในการหารือเกี่ยวกับความเข้ากันได้กับ Podman มักถูกปฏิเสธอย่างรวดเร็ว ซึ่งบางคนรู้สึกว่าผิดปกติสำหรับโครงการโอเพนซอร์ส

คุณสมบัติหลักของ Act:

  • รัน GitHub Actions workflows ในเครื่องท้องถิ่น
  • ใช้ Docker เพื่อจำลองสภาพแวดล้อมการทำงานของ GitHub
  • กำหนดค่าตัวแปรสภาพแวดล้อมและระบบไฟล์ให้ตรงกับ GitHub
  • ต้องการเครื่องมือ Go 1.20+ สำหรับการสร้างจากซอร์สโค้ด

ปัญหาทั่วไปที่มีการรายงาน:

  • ปัญหาความเข้ากันได้ของแพลตฟอร์ม (โดยเฉพาะบน Mac ซีรีส์ M)
  • ไม่รองรับ Podman
  • ขนาดของ container images ใหญ่ (สูงถึง 60GB เมื่อไม่ได้บีบอัด)
  • ความยากลำบากในการจัดการตัวแปรสภาพแวดล้อมและข้อมูลลับ
  • ความท้าทายในการใช้งาน workload identity federation
  • ต้องการการปรับเปลี่ยน workflow สำหรับการรันในเครื่องท้องถิ่น

ความซับซ้อนของการกำหนดค่า

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

เวิร์กโฟลว์ที่ใช้โทเค็น OpenID Connect (OIDC) ของ GitHub สำหรับการเข้าถึงทรัพยากรคลาวด์เช่น AWS ต้องการตรรกะเงื่อนไขพิเศษเพื่อให้ทำงานได้อย่างถูกต้องทั้งในสภาพแวดล้อม GitHub และโลคอล ซึ่งจำเป็นต้องมีการแก้ไขไฟล์เวิร์กโฟลว์โดยเฉพาะเพื่อรองรับการทดสอบในเครื่องโลคอล

ความเป็นจริงของการจำลอง CI แบบโลคอล

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

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

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

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

อ้างอิง: act