Flutter Web บน Firebase Hosting: CI/CD Pipeline ฟรีแบบปฏิบัติจริง
แชร์ประสบการณ์สร้าง CI/CD pipeline สำหรับ Flutter web บน Firebase Hosting ด้วย GitHub Actions โดยมีค่าใช้จ่าย 0 ดอลลาร์ต่อเดือน

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- แชร์วิธีตั้งค่า CI/CD pipeline สำหรับ Flutter web บน Firebase Hosting ฟรี 100%
- ใช้ GitHub Actions ช่วยบิวด์โค้ด แคชข้อมูล และอัปเดตอัตโนมัติทุกครั้งที่มีการ merge
- สร้าง URL พรีวิวเฉพาะสำหรับแต่ละ Pull Request เพื่อตรวจสอบงานก่อนขึ้น production
- เลิกพึ่งพาวิธี deploy แบบแมนนวลที่เสี่ยงต่อความผิดพลาดจากคน
ก่อนหน้านี้กระบวนการอัปเดตเว็บไซต์พอร์ตโฟลิโอของผู้พัฒนาใช้เพียงสามขั้นตอนง่ายๆ คือ รันคำสั่ง flutter build web แล้วภาวนาให้อะไรๆ ราบรื่น ก่อนจะปิดท้ายด้วย firebase deploy แต่วิธีนี้กลับสร้างบทเรียนราคาแพงเมื่อเกิดเหตุการณ์อัปโหลดล้มเหลวระหว่างต่อไวไฟโรงแรมที่อาบูดาบี จนทำให้เว็บไซต์แสดงผลเป็นหน้าจอสีขาวว่างเปล่า นานถึงสี่ชั่วโมงเต็มในช่วงเวลาที่รีครูเตอร์กำลังเข้ามาเปิดชมพอดี
เหตุการณ์ดังกล่าวกลายเป็นจุดเปลี่ยนสำคัญที่ทำให้ตัดสินใจย้ายกระบวนการทั้งหมดไปไว้บน GitHub Actions ในสัปดาห์ถัดมา โดยระบบที่ใช้งานจริงในปัจจุบันมีจุดเด่นหลักคือการบิวด์โค้ดเพียงครั้งเดียว แคชข้อมูลให้แน่นหนา และสร้าง URL พรีวิวสำหรับทุก Pull Request พร้อมกับส่งขึ้น production อัตโนมัติทันทีที่ทำการ merge โค้ด

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ข้อดีที่สำคัญที่สุดไม่ใช่เรื่องค่าใช้จ่ายที่ประหยัดได้เพราะอยู่ภายใต้โควตาฟรีของทั้ง GitHub Actions และ Firebase Hosting แต่เป็นการตัดปัญหาที่ตัวบุคคลซึ่งมักจะเผลอเรอทำพลาดเมื่อเหนื่อยล้า รีบร้อน หรือใช้งานอินเทอร์เน็ตความเร็วต่ำ จนเผลอข้ามขั้นตอนการรันคำสั่งตรวจสอบโค้ดหรือหลงลืมบิวด์ไฟล์ชุดล่าสุด
อีกหนึ่งข้อดีที่ส่งผลอย่างมากต่อกระบวนการทำงานคือการมีพรีวิว URL สำหรับแต่ละ Pull Request ซึ่งช่วยเปลี่ยนจากคำพูดลอยๆ ว่าโค้ดใช้งานได้จริง ให้กลายเป็นลิงก์ที่กดเข้าไปทดสอบได้ทันที ทำให้ทีมงานหรือเพื่อนร่วมงานช่วยกันตรวจสอบข้อผิดพลาดเรื่องการจัดหน้าจอหรือปัญหาตัวอักษรไม่แสดงผลก่อนนำขึ้นจริงได้ง่ายยิ่งขึ้น
"CI doesn't get tired. It runs the same steps in the same order every single time, on a clean machine, or it refuses to deploy at all."
Dev.to Author
ในส่วนของการจัดการความปลอดภัย บทความเตือนให้หลีกเลี่ยงการใช้โทเค็นอายุยาวแบบเดิมที่ผูกติดกับบัญชี Google ทั้งหมด แต่ควรเปลี่ยนมาใช้ service account ที่จำกัดสิทธิ์เฉพาะโปรเจกต์เดียวตามหลักการความปลอดภัยขั้นต่ำสุด (Principle of Least Privilege) เพื่อป้องกันความเสี่ยงหากเกิดกรณีข้อมูลรั่วไหลในระบบล็อกของ CI
การนำระบบ CI/CD มาใช้กับโปรเจกต์ขนาดเล็กอย่างเว็บไซต์พอร์ตโฟลิโอหรือบล็อกส่วนตัว ช่วยฝึกฝนระเบียบวินัยในการพัฒนาซอฟต์แวร์แบบมืออาชีพ ลดขนาดของชุดโค้ดในการส่งมอบแต่ละครั้งให้เล็กลง และทำให้การตรวจสอบข้อผิดพลาดทำได้อย่างรวดเร็วเมื่อเกิดปัญหาขึ้น
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น