~/VibeHandbook
PDF ฟรี

บท 15 · 07

พื้นฐานของ CI: ทำให้การตรวจสอบเป็นแบบอัตโนมัติ

(Continuous Integration — การผสานรวมต่อเนื่อง) คือหุ่นยนต์ที่รันการตรวจสอบของคุณทุกครั้งที่คุณ push โค้ด เพื่อไม่ให้คุณ ลืม รันมัน แพลตฟอร์มส่วนใหญ่ทำให้เรื่องนี้เหลือแค่ไฟล์เดียว นี่คือตัวอย่าง GitHub Actions แบบขั้นต่ำ:

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - run: npm run lint
      - run: npm run typecheck
      - run: npm test

ตอนนี้ทุก push จะถูก lint ตรวจสอบชนิดข้อมูล และทดสอบโดยอัตโนมัติ ถ้ามีอะไรล้มเหลว คุณจะเห็นเครื่องหมายสีแดงก่อนที่โค้ดจะถูก merge ได้ คุณสามารถขอให้ AI เขียนไฟล์นี้ให้เข้ากับสแต็กของคุณได้ด้วย — "เพิ่ม GitHub Actions workflow ที่รัน lint, การตรวจสอบชนิดข้อมูล และเทสต์ของเราทุกครั้งที่มี "

เมื่อเปิดใช้งานการป้องกัน (branch protection) แล้ว การตรวจสอบที่ขึ้นสีแดงจะไม่ใช่แค่การเตือนคุณเฉย ๆ — มันจะล็อกปุ่ม merge ไว้จริง ๆ จนกว่า build จะเขียวอีกครั้ง:

   pull request
        │
        ▼
   ┌──────────────┐      all pass        ┌───────────────┐
   │ CI runs      │ ───── ✓ green ─────▶ │ MERGE allowed │ ──▶ main
   │ lint · types │                      └───────────────┘
   │ · tests      │      any fail
   └──────────────┘ ───── ✗ red ──────▶  ┌───────────────┐
                                          │ MERGE blocked │  🔒
                                          └───────────────┘
                                          fix, push, re-run

จุดสำคัญของ CI ไม่ใช่การทำให้เป็นอัตโนมัติเพื่อตัวมันเอง แต่คือการย้ายการตรวจสอบออกจากความทรงจำของคุณ ไปอยู่ในท่อลำเลียงที่ไม่สามารถถูกข้ามได้แม้ในคืนที่คุณเหนื่อยล้า มีการอัปเกรดสองอย่างที่คุ้มค่าเมื่อพื้นฐานรันเขียวแล้ว อย่างแรก เปลี่ยนการตรวจสอบให้เป็นสถานะ บังคับ (required) บน branch หลักของคุณ (กฎ "branch protection rule" บน GitHub) เพื่อให้ build สีแดงล็อกปุ่ม merge จริง ๆ แทนที่จะแค่แสดงคำเตือนที่คุณเพิกเฉยได้ อย่างที่สอง เมื่อ CI ล้มเหลว ให้วาง log ที่ล้มเหลวไปให้ AI โดยตรง: "CI ล้มเหลวในรอบนี้ นี่คือ output — วินิจฉัยและแก้ไขให้หน่อย" log คือรายงานบั๊กที่สร้างโดยเครื่องอย่างแม่นยำ ซึ่งเป็นอินพุตแบบที่ AI ทำได้ดีที่สุดพอดี

อยากได้แบบออฟไลน์?

ดาวน์โหลดหนังสือทั้งเล่มเป็น PDF หรือ EPUB — ฟรี