GitLab CI/CD 使用 Cache 和 artifacts
cache 跟 artifacts 字面上都有保存檔案供以後使用的意思,在 GitLab 使用要特別留意他們的定義
簡答
跨 pipeline 時使用 cache,同 pipeline 跨 job 時使用 artifacts
介紹
提醒一點,當你同時使用 caches 和 artifacts 在同一個路徑時,會被覆蓋
不要使用 caches 在一個 pipeline 中不同的 job 之間傳遞檔案
Caches
caches 是設計來保存編譯或建置用所需要的依賴庫或第三方工具,像是 npm package 之類的,只要下載過一次,就可以保存,加速下次的 pipeline。
專案需要使用獨立的 caches 時,可以使用 key
,利用像是環境變數 CI_COMMIT_REF_SLUG
是 branch / tag 名稱,取 63 長度,全小寫,而且只保留英數其它換成-
,可以用在 domain 等其它地方。
舉例:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
Artifacts
如果是要用在同一個 pipeline, 不同 stage / job 之間傳遞的檔案,則應該使用 artifacts。使用 artifacts 時,會自動把檔案傳遞到後續的 job。
關於 cache,可以指定 key
讓每個 branch 有各自的 cache。
artifacts:
paths:
- dist/
Ref
Cache dependencies in GitLab CI/CD - GitLab Predefined environment variables reference - GitLab cache - GitLab CI/CD Pipeline Configuration Reference - GitLab artifacts - GitLab CI/CD Pipeline Configuration Reference - GitLab
留言