Phần 3 — Cache vs Artifacts: chiến lược và Reports
Ý kiến
0
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Chưa có ý kiến nào. Hãy là người đầu tiên chia sẻ!
Pipeline production Next.js → Docker → K8s với cache image, manual approval. Tổng kết best practices và kỹ thuật debug (CI Lint, visualizer, CI_DEBUG_TRACE).
Khai báo environment để GitLab theo dõi deployments, có lịch sử và nút rollback. Review Apps — tính năng signature: mỗi MR tự deploy lên môi trường tạm.
Tái sử dụng pipeline giữa nhiều dự án với include (local, project, template, remote), kế thừa job với extends (hidden job), và YAML anchors.
Series GitLab CI/CD Toàn Tập — 9 phần:
Phần 1 — Tổng quan: GitLab CI/CD, kiến trúc và các khái niệm
Phần 2 — .gitlab-ci.yml đầu tiên và Variables (predefined, UI, masked)
Phần 3 — Cache vs Artifacts: chiến lược và Reports ← bạn đang đọc
Phần 5 — GitLab Runner self-hosted: cài đặt và executors (Shell/Docker)
Phần 9 — Pipeline thực tế Next.js → Docker → K8s + best practices + debug
Cache và Artifacts là hai khái niệm trông giống nhau (cùng lưu file giữa các bước) nhưng khác hoàn toàn về mục đích và phạm vi. Nhầm lẫn là nguyên nhân hàng đầu khiến pipeline chậm, hoặc deploy nhầm code cũ. Phần này tách rõ hai khái niệm, thêm chiến lược cache tối ưu (key theo lockfile, policy pull) và Reports — tính năng cho phép GitLab parse JUnit, coverage để hiện trực tiếp trong MR.
Hai khái niệm tưởng giống nhưng khác hoàn toàn về mục đích:
| Cache | Artifacts | |
|---|---|---|
| Mục đích | Tăng tốc job (dùng lại deps) | Truyền data giữa các job/stage |
| Phạm vi | Giữa các pipeline khác nhau | Giữa các job cùng pipeline |
| Truyền tự động xuống job sau | Không — phải đặt cùng key | Có — mọi job stage sau tự download |
| Trường hợp dùng | node_modules, ~/.m2 | build output, test reports |
cache:
key:
files:
- pnpm-lock.yaml # Cache mới khi lockfile đổi
paths:
- .pnpm-store/
policy: pull-push # mặc định: kéo cache khi start, đẩy cache khi end
Job chỉ đọc cache (không cần ghi) thì đặt policy: pull — tiết kiệm vài chục giây upload.
test-job:
stage: test
script:
- pnpm test --reporter=junit --output=junit.xml
artifacts:
when: always # Lưu cả khi job fail (để debug)
expire_in: 30 days
paths:
- junit.xml
- coverage/
reports:
junit: junit.xml # GitLab UI hiện tab "Tests"
coverage_report:
coverage_format: cobertura
path: coverage/cobertura.xml
Khi đặt reports:, GitLab parse file để hiển thị trực tiếp trong merge request — tab "Tests", widget code coverage, security scanning…
Trong phần này bạn đã nắm:
Cache: tăng tốc job, giữa các pipeline, phải đặt cùng key ở các job dùng chung.
Artifacts: truyền data giữa job cùng pipeline, job stage sau tự download.
Chiến lược cache tốt: key.files: [pnpm-lock.yaml] — cache mới khi lockfile đổi; policy: pull cho job chỉ đọc, tiết kiệm upload.
Reports: artifacts.reports.junit hiện tab Tests trong MR; coverage_report với Cobertura hiện widget coverage; when: always để lưu cả khi job fail.
Trong Phần 4, ta học cú pháp rules mới (thay only/except) và hiểu rõ 3 chế độ pipeline: branch, MR pipeline, và Merged Results.