尝试 restore/save 缓存时出现 CircleCI 错误
CircleCI error when attempting to restore/save cache
我正在配置 CircleCI 以尝试缓存依赖项,这样我就不必在每次提交时都 运行 yarn install
。
这是我的 config.yml
文件的样子:
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_cache
或 save_cache
尝试 运行 时,我收到以下错误:
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 的新手,所以我不确定如何解释它。我该怎么做才能解决这个问题?
编辑:
这是我的目录结构:
--project_root
|
|--frontend
|-node_modules/
|-public/
|-src/
|-tests/
|-package.json
|-yarn.lock
我很难给出一个很好的答案,因为我在回购协议中看不到你的文件,但你现在的配置表明你拥有的 yarn.lock
文件不在回购协议的根目录中而是 ./frontend/tests
.
如果那是它所在的位置并且那是您想保留它的位置,那么我建议将 working_dir
键从步骤级别移动到作业级别。然后将其应用于每个步骤,包括缓存步骤。然后他们应该找到他们正在寻找的文件。
更新:
感谢回购树。据此你可能希望你的配置是这样的:
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
您会在这里注意到一些事情:
- 我将
workflows
移动到那个顶部。这只是个人风格的选择,但我相信它有助于在配置增长时保持配置的可读性。
- 我将
working_directory
移动到作业级别而不是它所在的步骤。
- 我将
working_directory
设置为前端目录。 CircleCI 上的大多数文件路径都与 working_directory 相关。由于那是 yarn.lock
所在的位置,所以这就是我设置它的位置。
- 我将图像从
circleci/node:14
更改为 cimg/node:14
。 circleci
命名空间中的图像已弃用。展望未来,您将需要使用 cimg
命名空间中较新的 CircleCI 图像。
我正在配置 CircleCI 以尝试缓存依赖项,这样我就不必在每次提交时都 运行 yarn install
。
这是我的 config.yml
文件的样子:
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_cache
或 save_cache
尝试 运行 时,我收到以下错误:
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 的新手,所以我不确定如何解释它。我该怎么做才能解决这个问题?
编辑:
这是我的目录结构:
--project_root
|
|--frontend
|-node_modules/
|-public/
|-src/
|-tests/
|-package.json
|-yarn.lock
我很难给出一个很好的答案,因为我在回购协议中看不到你的文件,但你现在的配置表明你拥有的 yarn.lock
文件不在回购协议的根目录中而是 ./frontend/tests
.
如果那是它所在的位置并且那是您想保留它的位置,那么我建议将 working_dir
键从步骤级别移动到作业级别。然后将其应用于每个步骤,包括缓存步骤。然后他们应该找到他们正在寻找的文件。
更新:
感谢回购树。据此你可能希望你的配置是这样的:
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
您会在这里注意到一些事情:
- 我将
workflows
移动到那个顶部。这只是个人风格的选择,但我相信它有助于在配置增长时保持配置的可读性。 - 我将
working_directory
移动到作业级别而不是它所在的步骤。 - 我将
working_directory
设置为前端目录。 CircleCI 上的大多数文件路径都与 working_directory 相关。由于那是yarn.lock
所在的位置,所以这就是我设置它的位置。 - 我将图像从
circleci/node:14
更改为cimg/node:14
。circleci
命名空间中的图像已弃用。展望未来,您将需要使用cimg
命名空间中较新的 CircleCI 图像。