Ci(TravisCI和CircleCI)中没有安装赛普拉斯版本

时间:2018-06-05 17:49:17

标签: continuous-integration e2e-testing cypress

我在更新到赛普拉斯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/*

1 个答案:

答案 0 :(得分:0)

这是缓存node_modules的一个小问题 - 安装赛普拉斯二进制文件的安装后脚本不会在node_modules/cypress存在的情况下运行。

要解决此问题,您可以刷新CI版本的缓存,一切都应该解决。 这就是为什么我建议使用npm ci,因为每次运行命令都会擦除node_modules

同时 - 在Circle CI 2.0中,缓存的工作方式与1.0TravisCI的工作方式不同,因为缓存是不可变的。您只能创建另一个缓存,永远不会破坏和重写缓存。所以,你应该像这样进行缓存:

- 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