npm install -g dredd@stable fails on CircleCI due to npm ERR! code ECONNRESET

342 Views Asked by At

I have a project on CircleCI which started going red (due to failure on installing dredd) at some point. Currently the same exact project (same code, same circle.yml) may fail or succeed at random it seems.

The failure is always in the phase npm install -g dredd@stable with the following error which repeats itself several times and eventually fails the build:

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'

If I try to rerun the build several times it will succeed at some point (going Green). The dredd installation then shows up something like this:

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', basically installing dredd successfully and moving on to test the build.

Since it seems to fail randomly I don't think the proxy has anything to do with it. Here is the circle.yml file for reference:

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

Any help would be most welcome.

1

There are 1 best solutions below

0
On

I've run into the same issue. One fix I found was to change the registry for npm to use HTTP instead of HTTPS. In my circle.yml file I changed my dependencies from:

dependencies:
  pre:
    - npm install -g [email protected]

to

dependencies:
  pre:
    - npm config set registry http://registry.npmjs.org/
    - npm install -g [email protected]