Mỗi job trong CI chạy trên runner riêng, filesystem riêng — file build ở job A không tự có ở job B.
Cần đẩy qua artifact.
yaml
build:
steps:
- run: pnpm build
- uses: actions/upload-artifact@v4
with: { name: dist, path: dist/ }
deploy:
needs: [build]
steps:
- uses: actions/download-artifact@v4
with: { name: dist }Khác biệt cốt lõi:
| Artifact | Cache | |
|---|---|---|
| Mục đích | Truyền kết quả giữa job / lưu để tải về | Tăng tốc, tránh làm lại việc |
| Mất đi thì sao | Pipeline sai (job sau thiếu input) | Chỉ chậm hơn, kết quả vẫn đúng |
| Vòng đời | Gắn với một lần chạy | Dùng chung qua nhiều lần chạy |
Chốt: artifact là dữ liệu bắt buộc phải có; cache là tối ưu có thể bỏ. Không bao giờ dùng cache để truyền build output — một lần cache miss là pipeline hỏng theo cách khó lần ra.