首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试恢复/保存缓存时发生CircleCI错误

尝试恢复/保存缓存时发生CircleCI错误
EN

Stack Overflow用户
提问于 2021-08-19 15:27:55
回答 1查看 1.1K关注 0票数 0

我将CircleCI配置为尝试缓存依赖项,这样就不必在每次提交时运行yarn install

这就是我的config.yml文件的样子:

代码语言:javascript
运行
复制
version: 2.1

jobs:
  build-and-test-frontend:
    docker:
      - image: circleci/node:14
    steps:
      - checkout
      - restore_cache:
          name: Restore Yarn Package Cache
          keys:
            - yarn-packages-{{ checksum "yarn.lock" }}
      - run:
          working_directory: ./frontend/tests
          name: Run jest tests
          command: |
            yarn install --frozen-lockfile --cache-folder ~/.
            yarn test
      - save_cache:
          name: Save Yarn Package Cache
          key: yarn-packages-{{ checksum "yarn.lock" }}
          paths:
            - ~/.cache/yarn

workflows:
  sample:
    jobs:
      - build-and-test-frontend

但是,当restore_cachesave_cache试图运行时,我会得到以下错误:

代码语言:javascript
运行
复制
error computing cache key: template: cacheKey:1:17: executing "cacheKey" at <checksum "yarn.lock">: error calling checksum: open /home/circleci/project/yarn.lock: no such file or directory

我对使用CircleCI非常陌生,所以我不知道如何解释这一点。我能做些什么来解决这个问题?

编辑:

这是我的目录的结构:

代码语言:javascript
运行
复制
--project_root
 |
 |--frontend
    |-node_modules/
    |-public/
    |-src/
    |-tests/
    |-package.json
    |-yarn.lock
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-23 16:05:01

我很难给出一个很好的答案,因为我无法在回购中看到您的文件,但是您现在的配置表明,您拥有的yarn.lock文件不是在回购的根上,而是在./frontend/tests中。

如果这是您想要保存的位置,那么我建议将working_dir键从步骤级别移到作业级别。然后,这将应用于每个步骤,包括缓存步骤。然后他们应该找到他们要找的文件。

更新:

谢谢你的回购树。根据这一点,您可能希望配置如下:

代码语言:javascript
运行
复制
version: 2.1

workflows:
  sample:
    jobs:
      - build-and-test-frontend

jobs:
  build-and-test-frontend:
    docker:
      - image: cimg/node:14.17
    working_directory: ./frontend
    steps:
      - checkout
      - restore_cache:
          name: Restore Yarn Package Cache
          keys:
            - yarn-packages-{{ checksum "yarn.lock" }}
      - run:
          name: Run jest tests
          command: |
            yarn install --frozen-lockfile --cache-folder ~/.
            yarn test
      - save_cache:
          name: Save Yarn Package Cache
          key: yarn-packages-{{ checksum "yarn.lock" }}
          paths:
            - ~/.cache/yarn

在这里你会注意到以下几点:

  1. ,我把workflows移到了那个顶部。这只是个人风格上的选择,但我相信,随着配置的增长,它有助于保持配置的可读性。
  2. I将working_directory移到了作业级别,而不是原来的步骤。
  3. ,我将working_directory设置为前端目录。CircleCI上的大多数文件将相对于working_directory。因为这是yarn.lock的位置,所以我设置它。
  4. ,我将图像从circleci/node:14更改为cimg/node:14。不推荐circleci名称空间中的图像。接下来,您将希望使用位于cimg命名空间.

中的更新的图像。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68850612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档