Khi CI là để làm cảnh

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.

Post a Comment

Mới hơn Cũ hơn