GitHub Actions
มันคืออะไร
ลองนึกภาพเช็คลิสต์ที่รันตัวเองทุกครั้งที่คุณบันทึกงาน — "รันเทสต์ สร้างตัวแอป แล้วปล่อยขึ้นออนไลน์" — โดยที่คุณไม่ต้องขยับนิ้วแม้แต่นิดเดียว นั่นคือ /CD (Continuous Integration / Continuous Delivery หรือการรวมโค้ดต่อเนื่อง / การส่งมอบต่อเนื่อง): ระบบอัตโนมัติที่ตรวจสอบโค้ดของคุณและส่งมอบมันให้แทนคุณ GitHub Actions คือระบบ CI/CD ที่ติดตั้งมาพร้อมกับ GitHub อยู่แล้ว คุณเพิ่มไฟล์ YAML (ไฟล์ตั้งค่าแบบข้อความล้วนที่มนุษย์อ่านง่าย) เข้าไปในรีโพซิทอรีของคุณเพื่ออธิบาย workflow — ชุดของขั้นตอนที่รันโดยอัตโนมัติเมื่อมีเหตุการณ์เกิดขึ้น เช่น การ push, การเปิด หรือตามตารางเวลาที่กำหนด แต่ละ workflow จะรันบนเครื่องที่ GitHub เป็นโฮสต์ให้ (เรียกว่า "runner" ซึ่งเป็นคอมพิวเตอร์เครื่องใหม่ที่ GitHub ให้คุณเช่าใช้สำหรับงานนั้น) ดังนั้นคุณจึงสามารถทดสอบ สร้าง และ โค้ดของคุณได้โดยไม่ต้องดูแลเซิร์ฟเวอร์ของตัวเองเลย นี่คือวิธีที่นิยมที่สุดในการทำให้เส้นทางจาก "โค้ดถูก push" ไปสู่ "แอปใช้งานได้จริง" เป็นไปโดยอัตโนมัติ
จุดแข็ง
- ติดตั้งมาในตัว GitHub อยู่แล้ว — ไม่ต้องไปตั้งค่าบริการ CI แยกต่างหาก
- ทำงานเมื่อมีเหตุการณ์ในรีโพเกิดขึ้น เช่น รันเทสต์ทุกครั้งที่มี PR (pull request หรือคำขอเปลี่ยนแปลงโค้ด) หรือ deploy ทุกครั้งที่มีการ push เข้า main
- มี marketplace ขนาดใหญ่ที่รวม action สำเร็จรูปสำหรับงานทั่วไป (การตั้งค่าเริ่มต้น, การ deploy, การตรวจสอบสไตล์โค้ด)
- มี runner ให้ใช้ทั้งบน Linux, macOS และ Windows พร้อมเวลาใช้งานฟรีจำนวนมากสำหรับรีโพสาธารณะ
- มีระบบจัดการความลับ (secrets) และการป้องกันสภาพแวดล้อม เพื่อให้การ deploy ปลอดภัย
ข้อแลกเปลี่ยน
- workflow แบบ YAML จะซับซ้อนขึ้นอย่างรวดเร็ว การไล่หาจุดที่ทำให้ pipeline (ชุดขั้นตอนอัตโนมัติที่ต่อกันเป็นสาย) ล้มเหลวอาจใช้เวลานาน
- เวลาใช้งานบนรีโพส่วนตัวถูกคิดเป็นโควตา และหากใช้งานหนักก็มีค่าใช้จ่าย
- การจำลองความล้มเหลวให้เกิดขึ้นบนเครื่องตัวเองทำได้ยาก เพราะมันรันอยู่บน runner ระยะไกล
- action จากบุคคลที่สามสะดวกก็จริง แต่ก็เป็นสิ่งที่ต้องตรวจสอบในฐานะ ของห่วงโซ่อุปทาน (supply chain)
เหมาะกับ
การทำให้การทดสอบ การสร้างตัวแอป และการ deploy เกิดขึ้นอัตโนมัติโดยตรงจากรีโพซิทอรีของคุณ — รันชุดเทสต์ของคุณทุกครั้งที่มี pull request และส่งขึ้นโฮสต์ของคุณ (เช่น Cloudflare Pages) ทุกครั้งที่ main มีการอัปเดต
เข้ากับ vibe coding แค่ไหน
GitHub Actions เข้ากันได้ดีเยี่ยมกับ vibe coding เพราะเอเจนต์สามารถเขียน pipeline ทั้งหมดให้คุณได้เลย ลองขอให้มันเพิ่ม workflow ที่ติดตั้ง dependency รันเทสต์ของคุณ และ deploy เมื่อมีการ push เข้า main — มันรู้จักชื่อ action ทั่วไปและรูปแบบของ YAML อยู่แล้ว คุณค่าที่แท้จริงคือการเป็นตาข่ายนิรภัย เมื่อเทสต์รันอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง AI ก็ไม่สามารถแอบ merge อะไรที่ทำให้ build พังได้อีกต่อไป เคล็ดลับ: บอกเอเจนต์ว่าคุณใช้โฮสต์อะไรและ manager ตัวไหน เพื่อให้มันเลือก action สำหรับ deploy และการตั้งค่า ได้ถูกต้อง และเก็บความลับ (secrets) ไว้ในการตั้งค่าของรีโพเท่านั้น อย่าใส่ไว้ในไฟล์ YAML เด็ดขาด
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 20 }
- run: npm ci
- run: npm test