continuous-integration - Gitlab CI/CD 的不同类型的缓存
问题描述
我有一个管道,其中我有后端和前端的 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
....
第二个是否只是为所有阶段提供缓存,而第一个只是为测试阶段提供缓存?
解决方案
你的问题的答案
第二个是否只是为所有阶段提供缓存,而第一个只是为测试阶段提供缓存?
大部分是肯定的。
基本上,第二个只是为所有作业提供缓存,而第一个只是为unit
作业提供缓存(因为同一阶段可能有几个其他作业,不受此设置的影响)。
请参阅相应的文档(要添加书签!):
https://docs.gitlab.com/ee/ci/yaml/#cache
如果
cache
在作业范围之外定义,则意味着它是全局设置的,所有作业都将使用该定义。
这种语义在 GitLab CI YAML 配置中被广泛应用:例如,如果您将image:
定义放在根级别(在作业范围之外),它也将在全局范围内应用(但也可以在无论如何,给定的工作)。
推荐阅读
- php - WSO2 IS 5.9 注销:没有与提供的会话索引对应的已建立会话
- c - 如何抑制 PC lint 中符号的单个 MISRA 2004 规则
- python - 将 Tokenize2 JSON 搜索函数从 PHP 转换为 Python
- oracle - 试图在 plsql 中接受用户输入但不工作
- bash - 如何在 bash 中重新分配变量?
- c# - 如何等到事件在c#中处理
- python - 使用 Pyinstaller 从 .py 代码生成 .exe 文件
- javascript - 警告:失败的道具类型:道具“日期”在“日历提供者”中标记为必需,但其值为“未定义”
- typescript - 实现`IGeneratable`的类必须提供`IGeneratorConstructor
`其中`T`是实现`IGeneratable`的类 - curl - curl:重定向 302:不将方法从 POST 更改为 GET