🔄 CI/CD là gì?
Máy tự chạy test và phát hành mỗi khi có code mới.
1
Hiểu nó là gì
CI/CD là quy trình tự động: mỗi lần đẩy code lên, hệ thống tự build, chạy test, và nếu đạt thì đưa luôn lên môi trường thật.
Nói theo đời thường:
Như băng chuyền nhà máy: hàng vừa lắp xong tự trôi qua trạm kiểm tra, đạt thì đi tiếp, lỗi thì gạt ra ngay tại chỗ.
Như băng chuyền nhà máy: hàng vừa lắp xong tự trôi qua trạm kiểm tra, đạt thì đi tiếp, lỗi thì gạt ra ngay tại chỗ.
⚠ Chỗ ẩn dụ này hỏng
Băng chuyền nhà máy chạy đều. Pipeline thì hỏng suốt — và thường hỏng vì lý do chẳng liên quan gì tới code bạn vừa sửa.
Máy CI sạch hơn máy bạn (không có dữ liệu cũ), chậm hơn (nên lộ hết flaky test), và khác múi giờ. “Chạy được ở máy tôi” là câu nói kinh điển đúng vào lúc CI đỏ.
2
Code trông thế nào
# .github/workflows/test.yml
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npx playwright test
Mỗi lần đẩy code là chạy lại toàn bộ. Không ai phải nhớ bấm nút.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Nhiều người cùng sửa một dự án
- Muốn biết ngay khi có người làm hỏng cái cũ
- Phát hành thường xuyên
✗ Đừng dùng khi
- Dự án một người, chạy tay vẫn kịp
- Bộ test còn quá chập chờn — CI sẽ đỏ liên miên rồi cả đội mất niềm tin
Chưa cần biết: ma trận nhiều môi trường, cache dependency, chia shard, tự rollback.
Để dành tới Mốc 3 — Tự sửa được khi nó hỏng: Test đỏ trên CI mà xanh ở máy bạn, và bạn biết bắt đầu tìm từ đâu.
Dấu hiệu bạn đã cần học nó: Khi pipeline chạy quá 20 phút và cả đội bắt đầu ngồi chờ nhau.
4
Đi đâu tiếp
- DeployPhần CD — đưa lên môi trường thật sau khi test đạt.
- HeadlessChế độ bắt buộc để test chạy được trên máy CI.
- Flaky TestCI là nơi flaky test lộ mặt rõ nhất.