跳过缓存生成,键的缓存已经存在

Skipping cache generation, cache already exists for key

使用 CircleCI - version: 2.1 - 用于缓存安装依赖项的持续部署。基于 save_cache 文档:

Generates and stores a cache of a file or directory of files such as dependencies or source code in our object storage. Later jobs can restore this cache.

当前场景:

请参阅下面.circleci/config.yml 文件中的简化 缓存步骤:​​

steps:
  - node/with-cache:
      steps:
        - checkout
        - run: npm install
        - save_cache:
            key: dependencies
            paths: node_modules

一旦向项目添加新包,问题就来了,因此 package.json 文件正在更改。同时 CircleCI 显示 Saving Cache 步骤的消息:

Skipping cache generation, cache already exists for key: dependencies
Found one created at 2020-05-23 19:29:29 +0000 UTC

然后一次恢复缓存明显没有找到构建步骤中新添加的包:

./src/index.tsx
Cannot find module: 'package-name'. Make sure this package is installed.

问题:

有什么方法可以检查管道中的 package.json 变化吗?理想情况下,我只会在这些情况下安装依赖项,以便可以清除和更新缓存。

也许我没有在文档中看到什么。感谢任何帮助,谢谢!

问题是您使用的缓存键是 "dependencies",一个纯字符串。此密钥永远不会更改,因此您将始终使用完全相同的缓存。

你需要使用一个变化的缓存键,最好是基于package.lock。请阅读 CircleCI 文档中的缓存键部分以获取更多信息:https://circleci.com/docs/2.0/caching/#using-keys-and-templates