为什么在密钥仍然有效的情况下 Gitlab CI 会重新上传缓存

问题描述 投票:0回答:1

在 Angular 项目的 gitlab CI 文件中;我使用 package-lock.json 文件的校验和作为密钥来定义全局缓存。这样缓存只有在 package-lock.json 文件发生变化时才会失效。

cache:
  key:
    files:
      - package-lock.json
  paths:
    - node_modules/
    - .npm

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

我希望缓存只有在失效时才上传,有什么办法可以实现吗?或者还有什么备注建议吗?

angular gitlab gitlab-ci node-modules
1个回答
1
投票

默认情况下,缓存总是成功上传(推拉策略)。

您可以通过配置缓存策略来更改此行为。如果您希望作业仅下载缓存而不上传缓存,请将缓存策略设置为

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" 

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

© www.soinside.com 2019 - 2024. All rights reserved.