Skip to content

CI một job ​

Bản lệnh: .github/workflows/ci.yml có một job tên "Quality gates", làm mọi việc từ kiểm tới deploy.

Vì sao một job ​

GitHub làm tròn mỗi job lên một phút, và job nào cũng 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.

Các bước ​

  1. concurrency: trên main là nhóm production, không huỷ giữa chừng (có thể đang deploy hay áp migration); nhánh khác huỷ lượt cũ.
  2. Checkout đủ lịch sử, rồi script scope so với github.event.before để quyết định bước nào chạy và app nào deploy. Bảng app-paths.json: app → các đường dẫn nó phụ thuộc, kèm thứ tự deploy.
  3. Cache node_modules theo hash lockfile: restore ở mọi lượt, save chỉ trên main (nhánh nào cũng lưu cache thì vượt trần 10 GB và cache tốt bị đẩy ra). Không dùng cache: npm (cache tarball, vẫn phải cài).
  4. typecheck, lint, unit test, test API chạy song song trong một bước.
  5. npm run check:code và check:docs: cùng danh sách với pre-commit. Truyền EVENT_BEFORE cho gate cần biết "file push này thêm vào". Đừng dùng HEAD~1: push nhiều commit thì chỉ kiểm commit cuối.
  6. Kiểm binding hạ tầng thật (cần secret, chỉ ở CI).
  7. Áp migration D1 TRƯỚC deploy.
  8. Deploy lần lượt app bị đụng; app hỏng thì dừng.

Không làm trên CI ​

  • Không E2E: đắt nhất. E2E chạy ở lượt hằng tuần.
  • Không lịch dày: workflow theo schedule để hằng tuần, không hằng ngày. Gate production chạy thêm sau mỗi lượt CI trên main.

Main đỏ ​

Workflow auto-revert hoàn nguyên commit đỏ trên main. Lý do: với trunk-based, main đỏ chặn mọi phiên khác; hoàn nguyên ngay rẻ hơn để mọi người chờ một bản sửa.

Ở Conan hôm nay ​

Ở Conan (14 ngày tới 18.10.2026)
Kiểmci-checks.yml chỉ trên PR: job changes (chọn job bằng select-jobs.mjs + mọi gác) rồi tới 15 job build, matrix sites
Deploy16 workflow deploy-*.yml trên push main, cùng gọi _deploy-cloudflare.yml; không chờ ci-checks
Lượt chạy695 lượt; ci-checks 193 lượt, đỏ 11%, trung bình 3,38 phút tính tiền
PhútKhoảng 2.580 mỗi tháng, hạn Free 2.000
Cachecache: npm ở mọi job, mọi nhánh: 8,05 GB / 10 GB
Lịchd1-invariants và error-ledger hằng ngày; error-ledger đỏ 6/6 lượt vì token thiếu Zone Analytics Read

Xem Audit, mục 5.