当密钥仍然有效时,为什么 Gitlab CI 会重新上传缓存

Kai*_*dae 9 node-modules gitlab gitlab-ci angular

在 gitlab CI 文件中用于 Angular 项目;我使用 package-lock.json 文件的校验和作为密钥来定义全局缓存。这样缓存仅在 package-lock.json 文件更改时失效。

cache:
  key:
    files:
      - package-lock.json
  paths:
    - node_modules/
    - .npm
Run Code Online (Sandbox Code Playgroud)

问题:即使缓存密钥仍然有效,缓存仍然会上传。(见图片缓存名称没有改变)

在此输入图像描述

我希望缓存仅在失效时才上传,有什么办法可以实现这一点吗?或者有什么其他备注建议?

syt*_*ech 4

默认情况下,缓存始终在成功时上传(推拉策略)。

您可以通过配置缓存策略来更改此行为。如果您希望作业仅下载缓存而不上传缓存,请将缓存策略设置为pull。但是,您需要确保至少有一个先前作业使用 apushpush-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" 
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有配置说“如果旧缓存失效则推送缓存”