在 Angular 项目的 gitlab CI 文件中;我使用 package-lock.json 文件的校验和作为密钥来定义全局缓存。这样缓存只有在 package-lock.json 文件发生变化时才会失效。
cache:
key:
files:
- package-lock.json
paths:
- node_modules/
- .npm
问题:即使缓存密钥仍然有效,缓存仍然会上传。 (看图缓存名称没变)
我希望缓存只有在失效时才上传,有什么办法可以实现吗?或者还有什么备注建议吗?
默认情况下,缓存总是成功上传(推拉策略)。
您可以通过配置缓存策略来更改此行为。如果您希望作业仅下载缓存而不上传缓存,请将缓存策略设置为
pull
。但是,您需要确保至少一项先前作业使用 push
或 push-pull
策略填充缓存。
例如:
stages:
- one
- two
create_cache:
stage: one
cache:
key:
files:
- package-lock.json
paths:
- node_modules/
- .npm
policy: "push-pull" # default cache behavior
script:
- echo "this job is responsible for creating/updating the cache as needed"
other_jobs:
stage: two
cache:
key:
files:
- package-lock.json
paths:
- node_modules/
- .npm
policy: "pull" # only download cache, do not upload
script:
- echo "this will rely on cache being created in previous stage"
不幸的是,没有配置说“如果旧缓存失效则推送缓存”