Circle 2.0 - 只有在启用缓存时,angular 5构建才会失败

时间:2018-01-11 13:07:59

标签: angular circleci

我有一个Circle CI 2.0项目,我正在构建Angular 5应用程序。

以前我启用了缓存(恢复+保存)并且配置有问题(可能--preserveSymlinks true丢失了)所以我修复了它。

禁用缓存,并使用此新配置重新部署有效。原始错误是:

  

错误:没有可用于依赖类型的模块工厂:ContextElementDependency

现在,如果我保持CircleCI 2.0缓存禁用,它就可以了。 但是,如果我部署(缓存已禁用)然后重新启用缓存(因为理论上新缓存应该替换缓存配置错误的缓存)我再次得到该错误因为仍然使用了先前的缓存,导致导致构建在第一个地方中断的错误

我的circleci 2.0 config如下:

version: 2
jobs:
  build:
    docker:
      - image: circleci/node:7.10-browsers
        environment:
           CHROME_BIN: "/usr/bin/google-chrome"
    working_directory: ~/repo
    steps:
      - checkout
      - run: |
          head -n -6 /opt/google/chrome/google-chrome | sudo tee /opt/google/chrome/google-chrome-updated
          echo 'exec -a "$0" /opt/google/chrome/chrome --no-sandbox "$@"' | sudo tee -a /opt/google/chrome/google-chrome-updated
          sudo mv /opt/google/chrome/google-chrome-updated /opt/google/chrome/google-chrome
          sudo chmod 775 /opt/google/chrome/google-chrome
          ls -lah /usr/bin/google-chrome && ls -lah /etc/alternatives/google-chrome && ls -lah /usr/bin/google-chrome-stable && ls -lah /opt/google/chrome/google-chrome

      # Download and cache dependencies
      # TODO: fix cache issue causing Error: No module factory available for dependency type: ContextElementDependency
#      - restore_cache:
#          keys:
#          - v1-dependencies-{{ checksum "package.json" }}
#          # fallback to using the latest cache if no exact match is found
#          - v1-dependencies-

      - run: npm install

      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}
      ######
      # test
      ######
#      - run:
#          name: angular-test
#          command: ./node_modules/karma/bin/karma start
      - store_test_results:
          path: test-results.xml

      ######
      # build
      ######
      - run: npm run ng -- build --prod --aot --no-progress --preserveSymlinks true

1 个答案:

答案 0 :(得分:0)

找出正确reset the cache的唯一方法(因为部署没有缓存,然后使用缓存重新部署,似乎有效)是要更改cache ID

例如:

  

将{strong>所有 v1-dependencies字符串替换为some-other-name