【问题标题】:Skipping cache generation, cache already exists for key跳过缓存生成,key 的缓存已经存在
【发布时间】:2020-05-26 00:47:23
【问题描述】:

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

在我们的对象存储中生成并存储文件或文件目录的缓存,例如依赖项或源代码。以后的作业可以恢复这个缓存。

当前情景:

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

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

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

跳过缓存生成,缓存已存在键:依赖项
找到一个在 2020-05-23 19:29:29 +0000 UTC 创建的

那么一旦恢复缓存显然没有在构建步骤中找到新添加的包:

./src/index.tsx
找不到模块:'package-name'。确保已安装此软件包。

问题:

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

也许我在文档中没有看到任何内容。感谢您的帮助,谢谢!

【问题讨论】:

    标签: caching continuous-integration package.json circleci


    【解决方案1】:

    问题是您使用的缓存键是“依赖项”,一个纯字符串。此键永远不会更改,因此您将始终使用相同的缓存。

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

    【讨论】:

    • 根据您链接的文档,我已将dependencies-{{ checksum "package-lock.json" }} 应用于save_cacherestore_cache 中的key 案例,这些案例成功了,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多