我有一个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
答案 0 :(得分:0)
找出正确reset the cache
的唯一方法(因为部署没有缓存,然后使用缓存重新部署,不似乎有效)是要更改cache ID
。
例如:
将{strong>所有
v1-dependencies
字符串替换为some-other-name