Code lỗi syntax nhưng vẫn được merge, vì… pipeline không check gì, cứ xanh là vui!
Pipeline CI/CD chỉ để build và deploy, không lint, không test, như một cái máy photocopy vô hồn. Code lỗi syntax, logic sai, nhưng PR vẫn xanh lè, merge ngon ơ, để rồi production “bùng cháy”.
![]() |
Khi CI hữu ích như cánh cổng này |
Thực trạng: CI vô dụng
Thực trạng:
- Không static check: Không dùng ESLint, Pylint, hay PHPStan để bắt lỗi syntax.
- Không test: Không unit test, integration test, chỉ dựa vào review thủ công.
- Pipeline “giả tạo”: Chạy chỉ để báo xanh, không bảo vệ chất lượng code.
Hệ quả:
- Bug lọt production: Lỗi ngớ ngẩn như null pointer gây crash.
- Review thủ công tốn thời gian: Dev phải check từng dòng code.
- Nợ kỹ thuật tăng: Code xấu tích lũy, refactor ngày càng khó.
Giải pháp: Tích hợp lint và test
Để CI có ý nghĩa:
- Static code analysis: Tích hợp ESLint (JS), Pylint (Python), hoặc PHPStan (PHP) vào pipeline.
- Unit test cơ bản: Viết smoke test cho critical path (login, payment).
- Fail sớm: Pipeline fail nếu lint/test không pass, dùng ngưỡng coverage (ví dụ: 70%).
Ví dụ: Tích hợp ESLint trong GitHub Actions:
jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm ci - run: npm run lint -- --max-warnings=0
🎯 Tóm lại: CI/CD không lint, không test là “vỏ rỗng”. Tích hợp static check và test để bắt lỗi sớm, giữ production an toàn.
Đăng nhận xét