Pipeline chạy chậm như rùa

Project nào cũng chạy từ step 0, không cache gì cả, thôi thì… mở Youtube đợi!

Pipeline CI/CD chạy chậm như rùa bò, mỗi PR mất 15–30 phút build, dev lười push code, feature kẹt cứng. Audit xong, tôi chỉ hỏi: “ Sao không ai nghĩ đến cache vậy trời?

Pipeline CI khi không cache và build lại từ đầu!

Thực trạng: Pipeline không tối ưu

Thực trạng:  
  • Build lại toàn bộ: Tải lại node_modules, vendor, hoặc Docker layers mỗi lần chạy.  
  • Chạy tuần tự: Test, build, deploy không song song, kéo dài thời gian chờ.  
  • Không lọc thay đổi: Rebuild cả project dù chỉ đổi một file CSS.
Hệ quả:  
  • Dev lười push: Chờ pipeline lâu, dev giữ code local, merge muộn.  
  • Chậm release: Feature mới bị kẹt, client chờ dài cổ.  
  • Tốn tài nguyên: CI runner chạy vô ích, tăng chi phí cloud.

Giải pháp: Cache và split job

Để pipeline “chạy như gió”:  
  • Cache dependencies: Lưu node_modules, vendor, hoặc Docker layers (dùng --mount=type=cache).  
  • Split job: Chạy lint, test, build song song qua matrix jobs.  
  • Incremental build: Chỉ rebuild file thay đổi, dùng tool như esbuild hoặc tsc --incremental.

Ví dụ: Cache node_modules trong GitHub Actions:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: ~/.npm
          key: npm-${{ hashFiles('package-lock.json') }}
      - run: npm ci

🎯 Tóm lại: Pipeline chậm làm dev “ngáp dài”. Dùng cache, split job, và incremental build để CI/CD nhanh như meme lan truyền trên Reddit.

Post a Comment

Mới hơn Cũ hơn