У меня есть проект на CircleCI, который в какой-то момент начал краснеть (из-за сбоя при установке dredd). В настоящее время один и тот же проект (тот же код, тот же circle.yml) может потерпеть неудачу или преуспеть случайно.
Сбой всегда происходит на этапе npm install -g dredd@stable
со следующей ошибкой, которая повторяется несколько раз и в конечном итоге приводит к сбою сборки:
make: Leaving directory /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd/node_modules/dredd-transactions/node_modules/fury-adapter-apib-parser/node_modules/drafter/node_modules/protagonist/build'
npm ERR! Linux 3.13.0-117-generic
npm ERR! argv "/opt/circleci/nodejs/v4.2.6/bin/node" "/opt/circleci/nodejs/v4.2.6/bin/npm" "install" "-g" "dredd@stable"
npm ERR! node v4.2.6
npm ERR! npm v2.14.12
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR! syscall read
npm ERR! network read ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
Если я попытаюсь перезапустить сборку несколько раз, в какой-то момент она будет успешной (зеленой). Затем установка dredd показывает что-то вроде этого:
make: Leaving directory /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd/node_modules/dredd-transactions/node_modules/fury-adapter-apib-parser/node_modules/drafter/node_modules/protagonist/build'
/opt/circleci/nodejs/v4.2.6/bin/dredd -> /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd/bin/dredd
[email protected] /opt/circleci/nodejs/v4.2.6/lib/node_modules/dredd
├── [email protected]
├── [email protected]
├── [email protected]
etc', в основном успешно установив dredd и перейдя к тестированию сборки.
Поскольку он, кажется, терпит неудачу случайным образом, я не думаю, что прокси-сервер имеет к этому какое-то отношение. Вот файл circle.yml
для справки:
machine:
environment:
APIARY_API_KEY: "123456789ab12cd1234a1a1a123a123a"
ruby:
version: 2.3.1
dependencies:
pre:
- npm install -g dredd@stable
- gem install apiaryio
- pip install dredd_hooks
database:
override:
- bundle exec rake db:create db:schema:load db:seed
test:
pre:
- apiary fetch --api-name=ourAPIName --output=api-description.yml
- dredd
Любая помощь будет приветствоваться.