我在更新到赛普拉斯3.0
时在CI中收到此错误,说未安装赛普拉斯,但我在npm install
命令之前运行cypress run
。错误:
No version of Cypress is installed in:
/home/ubuntu/.cache/Cypress/3.0.1/Cypress
Please reinstall Cypress by running: cypress install
----------
为什么赛普拉斯没有找到赛普拉斯的可执行文件?
这是我的circle.yml
:
build:
<<: *defaults
steps:
- checkout
- restore_cache:
keys:
- v1-npm-deps
- run: npm install
- save_cache:
key: v1-npm-deps-{{ checksum "package.json" }}
paths:
- node_modules
- ~/.cache
- ~/.npm
- run: npm test
- run: npm run build
- persist_to_workspace:
root: /tmp/workspace
paths:
- .circleci/deploy.sh
- .circleci/e2e-test.sh
- package.json
- cypress.json
- node_modules/
- build/*
- cypress/*
答案 0 :(得分:0)
这是缓存node_modules
的一个小问题 - 安装赛普拉斯二进制文件的安装后脚本不会在node_modules/cypress
存在的情况下运行。
要解决此问题,您可以刷新CI版本的缓存,一切都应该解决。
这就是为什么我建议使用npm ci
,因为每次运行命令都会擦除node_modules
同时强>
- 在Circle CI 2.0中,缓存的工作方式与1.0
或TravisCI
的工作方式不同,因为缓存是不可变的。您只能创建另一个缓存,永远不会破坏和重写缓存。所以,你应该像这样进行缓存:
- restore_cache:
keys:
- v1-deps-{ .Branch }-{ checksum "package.json" }
- v1-deps-{ .Branch }
- v1-deps
- run:
- npm ci
- save_cache:
key: v1-deps-{ .Branch }-{ checksum "package.json" }
paths:
- ~/.cache
- ~/.npm