แนะนำเครื่องมือป้องกัน GitHub Action Workflow หยุดทำงานหลัง 60 วัน
ตั้งแต่ปีที่ผ่านมาเราเริ่มใช้เครื่องมือ WakaTime เป็นตัวเก็บสถิติ จากนั้นเราสามารถนำสถิติที่เก็บได้ไปแสดงผลบน GitHub ผ่านเครื่องมือ waka-box ประมาณนี้
โดยเครื่องมือที่ว่านี้การทำงานคือทุก ๆ วันเครื่องมือจะสร้าง job มายิง API ไปหา WakaTime เพื่อดึงข้อมูลสถิติมาแสดงผล ซึ่งเราจะต้องติดตั้ง job ผ่าน GitHub Action Workflow และผูกกับ API key ที่เราได้มาจากการสมัคร WakaTime
เกริ่นมาตั้งนาน ปัญหาที่เกิดขึ้นคือข้อจำกัดของ GitHub Action Workflow คือ
ถ้าไม่มี “ความเคลื่อนไหว” ใด ๆ ใน repository ของ job ภายใน 60 วัน ตัว job จะหยุดทำงานโดยอัตโนมัติ
ผลที่เกิดขึ้นก็คือสถิติของเราจะไม่ถูก update บนหน้า GitHub profile จนกว่าเราจะเข้าไปเปิดให้ job มันทำงานต่อ “ความเคลื่อนไหว” ที่กล่าวมาคือ commit ใน repository นั่นเอง แต่ว่าใน waka-box เราไม่ได้อยากจะแก้ไข code แต่อย่างใดเว้นเสียจากการ upgrade dependencies เท่านั้น
เพื่อที่จะป้องกันไม่ให้ GitHub Action Workflow หยุดทำงานหลัง 60 วัน เราเลยเลือกใช้ GitHub Action ที่ชื่อว่า Keepalive Workflow โดยหลักการทำงานคือทุก ๆ 50 วันหลังจาก commit ล่าสุด (สามารถปรับเปลี่ยนได้) มันจะใช้ bot มาทำ commit แบบ dummy ขึ้นมา เพื่อให้ ใน repository ของ job มี “ความเคลื่อนไหว” ส่งผลให้ไม่ถูกหยุดทำงานโดยอัตโนมัตินั่นเอง (อ้างอิงจากตัว keepalive-workflow)
วิธีการติดตั้ง
- เพิ่ม environment variable ที่มี key ชื่อว่า
GH_TOKEN
โดยมี value คือ GitHub personal access token ที่มี scope คือrepo
จุดประสงค์เพื่อให้ bot ทำ commit บน repository ของ job โดยอัตโนมัติ สำหรับ waka-box นั้นก่อนใช้งานจะต้องมีGH_TOKEN
อยู่แล้วเพื่อให้ bot แสดงสถิติบนหน้า GitHub profile ของเรา - ทำการ update GitHub Action Workflow file ของเรา โดยปกติจะอยู่ใน
path/to/your/repo/.github/workflows/schedule.yml
ตามนี้
เพียงเท่านี้ก็เป็นอันเสร็จ หลังจากนี้อีก 50 วันก็จะมี commit จาก bot ขึ้นมาละ