Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Một pipeline chạy mười lăm phút khiến cả nhóm sốt ruột và bắt đầu bỏ qua nó. Phần lớn thời gian thường đi vào việc tải lại thư viện giống hệt lần trước. Cache là cách đơn giản nhất để cắt bớt phần lãng phí này.
Mỗi lần chạy, CI thường dùng một máy sạch. Nghĩa là mọi thứ phải làm từ đầu: tải image, cài thư viện, biên dịch. Trong khi đó, danh sách thư viện của bạn có thể không đổi suốt nhiều ngày. Cache lưu kết quả của những việc lặp lại để lần sau dùng ngay.
Cache chỉ hiệu quả khi đúng và mới. Cách phổ biến là tạo khóa (key) dựa trên băm file khóa phiên bản như package-lock.json, composer.lock hay requirements.txt. Khi file đổi thì khóa đổi, cache cũ không bị dùng nhầm. Khi file không đổi, cache được tái sử dụng.
Với Node.js, action cài đặt có sẵn tùy chọn cache:
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ciVới PHP và Composer, bạn dùng action cache chung và tự chọn khóa:
- uses: actions/cache@v4
with:
path: ~/.composer/cache
key: composer-${{ hashFiles('composer.lock') }}
restore-keys: composer-
- run: composer install --no-interaction --prefer-distDòng restore-keys cho phép dùng cache gần đúng nhất nếu khóa chính chưa có, nên vẫn tiết kiệm được phần lớn thời gian khi chỉ đổi vài thư viện.
cache:
key:
files:
- package-lock.json
paths:
- .npm/
script:
- npm ci --cache .npm --prefer-offlineỞ đây ta cache thư mục cache của npm thay vì node_modules, vì npm ci luôn xóa node_modules trước khi cài.
Nếu pipeline build image Docker, hãy sắp xếp Dockerfile để các lớp ít đổi nằm trước:
COPY package*.json ./
RUN npm ci
COPY . .Ngoài ra, nhiều công cụ build hỗ trợ lưu cache lớp sang registry hoặc bộ nhớ của CI để tái sử dụng giữa các lần chạy. Hãy đọc tài liệu của công cụ bạn dùng để chọn đúng cấu hình.
Cache hỏng hoặc cũ có thể gây lỗi khó hiểu kiểu 'máy local chạy được, CI lỗi'. Khi nghi ngờ, hãy thử xóa cache hoặc đổi tiền tố khóa để buộc tạo lại. Không nên cache thứ chứa bí mật, vì cache có thể được chia sẻ giữa nhiều job.
Xem thời gian từng bước trong log để biết bước nào chậm nhất. Đừng tối ưu theo cảm giác. Thường chỉ một hai bước chiếm phần lớn thời gian, và cache đúng chỗ đó là đủ để thấy khác biệt rõ rệt.
Khóa cache theo file khóa phiên bản, cache thư mục tải về, sắp xếp Dockerfile hợp lý và chạy song song là bốn bước đơn giản giúp pipeline nhanh lên đáng kể. Một pipeline nhanh là pipeline mà cả nhóm sẵn lòng dùng.
Nếu muốn tìm hiểu sâu hơn về tối ưu quy trình build và triển khai, bạn có thể xem các khóa học tại codebem.com.
Nguyễn Đình Cường
0 comment