ตั้งแต่ปีที่ผ่านมาเราเริ่มใช้เครื่องมือ WakaTime เป็นตัวเก็บสถิติ จากนั้นเราสามารถนำสถิติที่เก็บได้ไปแสดงผลบน GitHub ผ่านเครื่องมือ waka-box ประมาณนี้

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)

วิธีการติดตั้ง

  1. เพิ่ม environment variable ที่มี key ชื่อว่า GH_TOKEN โดยมี value คือ GitHub personal access token ที่มี scope คือ repo จุดประสงค์เพื่อให้ bot ทำ commit บน repository ของ job โดยอัตโนมัติ สำหรับ waka-box นั้นก่อนใช้งานจะต้องมี GH_TOKEN อยู่แล้วเพื่อให้ bot แสดงสถิติบนหน้า GitHub profile ของเรา
  2. ทำการ update GitHub Action Workflow file ของเรา โดยปกติจะอยู่ใน path/to/your/repo/.github/workflows/schedule.yml ตามนี้

เพียงเท่านี้ก็เป็นอันเสร็จ หลังจากนี้อีก 50 วันก็จะมี commit จาก bot ขึ้นมาละ