Cơ bản về CI: làm cho các bước kiểm tra tự động
(Continuous Integration — tích hợp liên tục) là một con robot chạy các bước kiểm tra của bạn mỗi khi bạn push code, để bạn không thể quên chạy chúng. Hầu hết các nền tảng biến việc này thành một tệp duy nhất. Đây là một ví dụ tối giản với 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
Giờ đây mỗi lần push đều được lint, kiểm tra kiểu dữ liệu, và kiểm thử một cách tự động. Nếu có gì thất bại, bạn sẽ thấy một dấu đỏ trước khi mã có thể được merge. Bạn thậm chí có thể yêu cầu AI viết tệp này cho stack (bộ công nghệ) của bạn — "Thêm một quy trình GitHub Actions chạy lint, kiểm tra kiểu dữ liệu, và kiểm thử của chúng ta trên mỗi ."
Với protection (bảo vệ nhánh) được bật, một dấu kiểm đỏ không chỉ cảnh báo bạn — nó thực sự khóa nút merge cho đến khi bản build lại xanh:
pull request
│
▼
┌──────────────┐ all pass ┌───────────────┐
│ CI runs │ ───── ✓ green ─────▶ │ MERGE allowed │ ──▶ main
│ lint · types │ └───────────────┘
│ · tests │ any fail
└──────────────┘ ───── ✗ red ──────▶ ┌───────────────┐
│ MERGE blocked │ 🔒
└───────────────┘
fix, push, re-run
Ý nghĩa của CI không phải là tự động hóa vì bản thân nó — mà là nó đưa các bước kiểm tra ra khỏi trí nhớ của bạn và vào trong đường ống (pipeline), nơi chúng không thể bị bỏ qua vào một đêm mệt mỏi. Có hai nâng cấp đáng làm một khi những điều cơ bản đã chạy xanh. Đầu tiên, biến các bước kiểm tra thành một trạng thái bắt buộc trên nhánh chính của bạn (một "quy tắc bảo vệ nhánh" trên GitHub) để một bản build đỏ thực sự khóa nút merge thay vì chỉ hiện một cảnh báo mà bạn có thể lờ đi. Thứ hai, khi CI thất bại, hãy dán log lỗi trực tiếp cho AI: "CI thất bại ở lần chạy này, đây là kết quả — hãy chẩn đoán và sửa nó." Log lỗi là một báo cáo lỗi chính xác, do máy tạo ra, và đó chính là kiểu đầu vào mà AI xử lý tốt nhất.