При установке NPM всегда не удается получить реестр NPM в контейнере Docker в случайные моменты времени

#node.js #docker #npm #continuous-integration #gitlab-ci

#node.js #docker #npm #непрерывная интеграция #gitlab-ci

Вопрос:

Мы настроили непрерывную интеграцию / развертывание на Node.js веб-приложение. Проблема в том, что когда конвейер запускает тесты в контейнере docker на сервере CI (GitLab CI), установка npm завершается ошибкой в случайные моменты времени. Контейнер использует node v5.0.0 и npm v3.3.6. Результатом установки NPM является:

 npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info attempt registry request try #3 at 4:39:19 PM
npm http fetch GET https://registry.npmjs.org/commander/-/commander-2.8.1.tgz
npm info attempt registry request try #3 at 4:39:19 PM
npm http fetch GET https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz
npm ERR! fetch failed https://registry.npmjs.org/commander/-/commander-2.8.1.tgz
npm WARN retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm ERR! fetch failed https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz
npm WARN retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info retry fetch attempt 3 at 4:40:27 PM
npm info attempt registry request try #1 at 4:40:27 PM
npm http fetch GET https://registry.npmjs.org/commander/-/commander-2.8.1.tgz
npm info retry fetch attempt 3 at 4:40:27 PM
npm info attempt registry request try #1 at 4:40:27 PM
npm http fetch GET https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz
npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info attempt registry request try #2 at 4:40:45 PM
npm http fetch GET https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz
npm info attempt registry request try #2 at 4:40:45 PM
npm http fetch GET https://registry.npmjs.org/commander/-/commander-2.8.1.tgz
npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info retry will retry, error on last attempt: Error: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
npm info attempt registry request try #3 at 4:41:53 PM
npm http fetch GET https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz
npm info attempt registry request try #3 at 4:41:53 PM
npm http fetch GET https://registry.npmjs.org/commander/-/commander-2.8.1.tgz
npm ERR! fetch failed https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz
npm ERR! fetch failed https://registry.npmjs.org/commander/-/commander-2.8.1.tgz
npm ERR! Linux 3.16.0-4-amd64
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! syscall getaddrinfo

npm ERR! network getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443
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'
  

Я вижу, что npm не может выполнить выборку 2 раза из 3, так что это похоже на проблему с сетью, но сервер CI работает на Compute Engine (я верю в Google и подключение к реестру NPM …). Поэтому я просто попытался перезапустить свою службу Docker, но это тоже не сработало.

Есть идеи по этому поводу? Заранее спасибо!

Редактировать: В этот день (21/10/16) произошел широкомасштабный сбой DNS, может ли это быть причиной проблемы? Это также объясняет, почему другая сборка другого проекта завершилась неудачей на этапе развертывания вскоре после этого. Смотрите https://www.wired.com/2016/10/internet-outage-ddos-dns-dyn /

Комментарии:

1. Сегодня произошел широкомасштабный сбой DNS, из-за которого мои сборки npmjs завершались сбоем с аналогичными ошибками. Смотрите здесь: wired.com/2016/10/internet-outage-ddos-dns-dyn

2. Спасибо за статью ..! Звучит как хорошая новость для меня, но не для того, чтобы убедить мою команду в том, что непрерывная доставка — это хорошая сделка…

Ответ №1:

Оказалось, что в этот день произошел широкомасштабный сбой DNS, который привел к сбою моих сборок. Смотрите https://www.wired.com/2016/10/internet-outage-ddos-dns-dyn /

Ответ №2:

Проверьте, включен ли VPN. В большинстве случаев VPN вызывает эту проблему. Отключитесь от VPN, а затем повторите попытку, это сработает.