Hệ thống test và QC
Thiết kế lại ngày 18.10.2026 (SRC-1431). Nguồn kỹ thuật một nguồn: docs/ops/qc-system.
Mỗi chặng chỉ kiểm thứ nó còn bắt được rẻ
| Chặng | Chạy gì | Ngân sách | Đo 18.10.2026 |
|---|---|---|---|
| pre-commit | Tự sửa (last_reviewed, file sinh); eslint + typecheck workspace có file đã stage; cổng check:code khớp đường dẫn, chạy song song | dưới 5 s | khoảng 4 s (trước: 18-20 s) |
| pre-push | typecheck cả repo khi có code; unit test của workspace bị đụng và các workspace dùng nó | dưới 60 s | khoảng 15 s |
| CI trên main | MỘT job: phạm vi thay đổi, cài từ cache, typecheck + lint + unit test + test API song song, check:code, check:docs, rồi migration và deploy | dưới 5 phút | 3 phút 20 s khi chạy đủ mọi thứ |
| nightly (23:00, Mac) | check:report (không chặn) và 10% E2E quan trọng nhất | dưới 15 phút | E2E 49 s |
| production | synthetic check mỗi 15 phút, đối chiếu bản đang chạy với main, Sentry | liên tục |
Trước và sau
| Trước | Sau | |
|---|---|---|
| Job mỗi lượt CI | 4 (scope, gates, api-test, main) | 1 |
| Phút tính tiền, lượt chạy đủ | khoảng 8 | 4 |
| Phút tính tiền, lượt điển hình | khoảng 5,9 | khoảng 2-3 (ước tính) |
| Cache Actions | 10,6 GB, vượt trần 10 GB | 1,4 GB, chỉ main lưu |
check:code | 15,9 s, 51 cổng nối đuôi | 5,7 s song song; 1,9 s cho một commit learn |
check:docs | 12,2 s | 0,5 s |
| Đổi lockfile | test lại cả repo, deploy lại 21 app | chỉ workspace mà phụ thuộc thật sự đổi |
Vì sao một job
GitHub làm tròn mỗi job lên một phút và mỗi job cài lại node_modules. Bốn job nhỏ tốn tiền hơn một job làm cùng việc. Đây cũng là cách Vite, Astro, Hono và Cloudflare workers-sdk làm: huỷ lượt cũ, bỏ qua việc thừa khi chỉ sửa docs, một cổng tổng.
Không đổi, có chủ đích
- E2E đêm giữ 10% theo chỉ đạo chủ dự án, dù trọn bộ learn đo được chỉ 5,4 phút (903 ca).
- Không chuyển TypeScript 7, oxlint hay Biome: typecheck 6-10 s, lint có cache 2 s; đổi công cụ thêm rủi ro để lấy vài giây.