Gitlab CI / CD

时间:2020-07-27 21:01:33

标签: continuous-integration gitlab gitlab-ci gitlab-ci-runner

我有一个管道,其中后端和前端都有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
....

第二个只为所有阶段提供缓存,而第一个只为测试阶段提供缓存吗?

1 个答案:

答案 0 :(得分:0)

您问题的答案

第二个只为所有阶段提供缓存,而第一个只为测试阶段提供缓存吗?

通常是肯定的。

基本上,第二个只为所有作业提供缓存,而第一个只为 unit 作业提供缓存(因为可能还有其他几个处于同一阶段的作业,然后不受此设置的影响。

请参阅相应的文档(要添加书签!):

https://docs.gitlab.com/ee/ci/yaml/#cache

如果cache是在作业范围之外定义的,则表示它是全局设置的,所有作业都将使用该定义。

并且该语义在GitLab CI YAML配置中得到了广泛应用:例如,如果您在根级别(工作范围之外)放置image:定义,那么它也将在全球范围内应用(但可能只是还要在给定的工作中重新定义(覆盖)。