ข้ามไปเนื้อหาหลัก

Automating Android Play Store Releases: ปัญหาโควตาจัดเก็บ

เจาะลึกบทเรียนจากซีรีส์การสร้างระบบอัตโนมัติปล่อยแอป Android ตอนที่ 3 เมื่อระบบต้องชนกำแพงโควตาจัดเก็บฟรี 500MB ของ GitHub Actions จนสะดุด

เรียบเรียงโดย AI
Inewgen
23 Sep 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
Automating Android Play Store Releases: ปัญหาโควตาจัดเก็บ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • ซีรีส์อัตโนมัติปล่อยแอป Android ตอนที่ 3 เผยปัญหาค่าใช้จ่ายแฝงจากโควตาจัดเก็บ
  • GitHub Actions ฟรีเทียร์ให้โควตาจัดเก็บรวมทั่วองค์กรจำกัดเพียง 500MB
  • สาเหตุหลักมาจากแคช Gradle ที่แยกตามกิ่งและคีย์แคชที่ใช้งานไม่ได้จริง
  • ทางออกระยะยาวคือการย้ายไปใช้เซิร์ฟเวอร์รันเนอร์ที่ดูแลจัดการเอง

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

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

500MBโควตาจัดเก็บฟรีของ GitHub
10ชุดแคช Gradle ที่ซ้ำซ้อนกัน

กระบวนการตรวจสอบหาสาเหตุพบว่ามีสำเนาแคช Gradle ที่ซ้ำกันถึงสิบชุดเนื่องจากการตั้งค่าขอบเขตตามกิ่ง (branch-scoped) คีย์แคชที่ใช้งานไม่ได้ตั้งแต่เริ่มเขียน และการตั้งค่าเก็บรักษาไฟล์รุ่นที่ปล่อยไว้ถึง 30 วัน ซึ่งแม้การล้างข้อมูลเหล่านี้จะช่วยได้ชั่วคราว แต่นั่นไม่ใช่การแก้ปัญหาที่แท้จริง

office meeting room presentation

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

เมื่อเจาะลึกถึงสาเหตุของการมีแคชที่ซ้ำกันถึงสิบชุด แทนที่จะใช้แคชอันเดียวร่วมกันทุกกิ่ง พบว่าเกิดจากข้อผิดพลาดที่คีย์แคชถูกทำลาย นอกจากนี้ไฟล์ AAB ที่ลงนามแล้วซึ่งมีขนาดใหญ่ถึง 70MB ยังถูกตั้งค่าให้เก็บรักษาไว้นานถึง 30 วันโดยปริยาย ทั้งที่ไฟล์เหล่านี้ถูกส่งขึ้น Play Store ไปแล้วทันทีหลังสร้างเสร็จ ทำให้การเก็บสำเนาไว้บน GitHub เป็นเพียงความสะดวกในการดีบักที่ไม่เคยมีใครต้องย้อนกลับไปใช้จริง

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

"Error: Failed to CreateArtifact: Artifact storage quota has been hit."

GitHub Actions Error Message

การจำกัดโควตาจัดเก็บของระบบ CI/CD ภายนอกมักเป็นอุปสรรคเงียบที่ทีมพัฒนาซอฟต์แวร์มักมองข้ามในช่วงแรก การที่ระบบฟรีเทียร์กำหนดโควตารวมทั้งองค์กรทำให้โครงการขนาดใหญ่ที่มีหลายกิ่งการพัฒนาชนเพดานนี้ได้ง่าย การย้ายไปใช้ Infrastructure ของตนเอง (Self-hosted runner) จึงเป็นทางเลือกที่ช่วยปลดล็อกข้อจำกัดด้านทรัพยากรเหล่านี้ แม้จะต้องแลกมากับการดูแลจัดการสภาพแวดล้อมและเครื่องมือภายในด้วยตนเองก็ตาม

การแก้ปัญหาที่ยั่งยืนจึงไม่ใช่แค่การล้างข้อมูลเก่าหรือปรับลดเวลาเก็บรักษาไฟล์ แต่เป็นการยอมรับว่าไปป์ไลน์นี้ไม่ควรพึ่งพาโครงสร้างพื้นฐานที่ใช้ร่วมกันของ GitHub อีกต่อไป การย้ายงานสร้างทั้งหมดไปยังรันเนอร์ที่ดูแลเอง (Self-hosted runner) จึงเป็นทางออกสุดท้าย แม้จะเจออุปสรรคเล็กน้อยในตอนเริ่มต้น เช่น ขาดเครื่องมือวิเคราะห์เวลาอย่าง /usr/bin/time แต่ก็ทำให้ทีมเรียนรู้ว่าคำว่าดูแลเองหมายถึงการรับผิดชอบทุกรายละเอียด

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้