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.
Đăng nhận xét