我有一个管道,其中后端和前端都有node_modules。我试图在整个管道中缓存这些文件(我有三个不同的阶段)。这样做有什么区别?
stages:
- test
- build
- deploy
unit:
stage: test
image: node:12
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- Backend/node_modules
- Frontend/node_modules
...
和
stages:
- test
- build
- deploy
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- Backend/node_modules
- Frontend/node_modules
unit:
stage: test
image: node:12
....
第二个只为所有阶段提供缓存,而第一个只为测试阶段提供缓存吗?
答案 0 :(得分:0)
您问题的答案
第二个只为所有阶段提供缓存,而第一个只为测试阶段提供缓存吗?
通常是肯定的。
基本上,第二个只为所有作业提供缓存,而第一个只为 unit
作业提供缓存(因为可能还有其他几个处于同一阶段的作业,然后不受此设置的影响。
请参阅相应的文档(要添加书签!):
https://docs.gitlab.com/ee/ci/yaml/#cache
如果
cache
是在作业范围之外定义的,则表示它是全局设置的,所有作业都将使用该定义。
并且该语义在GitLab CI YAML配置中得到了广泛应用:例如,如果您在根级别(工作范围之外)放置image:
定义,那么它也将在全球范围内应用(但可能只是还要在给定的工作中重新定义(覆盖)。