Skip to content

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ặngChạy gìNgân sáchĐo 18.10.2026
pre-commitTự sửa (last_reviewed, file sinh); eslint + typecheck workspace có file đã stage; cổng check:code khớp đường dẫn, chạy song songdưới 5 skhoảng 4 s (trước: 18-20 s)
pre-pushtypecheck cả repo khi có code; unit test của workspace bị đụng và các workspace dùng nódưới 60 skhoảng 15 s
CI trên mainMỘ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à deploydưới 5 phút3 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ấtdưới 15 phútE2E 49 s
productionsynthetic check mỗi 15 phút, đối chiếu bản đang chạy với main, Sentryliên tục

Trước và sau ​

TrướcSau
Job mỗi lượt CI4 (scope, gates, api-test, main)1
Phút tính tiền, lượt chạy đủkhoảng 84
Phút tính tiền, lượt điển hìnhkhoảng 5,9khoảng 2-3 (ước tính)
Cache Actions10,6 GB, vượt trần 10 GB1,4 GB, chỉ main lưu
check:code15,9 s, 51 cổng nối đuôi5,7 s song song; 1,9 s cho một commit learn
check:docs12,2 s0,5 s
Đổi lockfiletest lại cả repo, deploy lại 21 appchỉ 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.