在 Sonatype Nexus 上使用 NPM 访问 GitHub

Accessing GitHub using NPM on Sonatype Nexus

我们目前正在使用 Nexus 2.10,并已成功将其用作 npm 的存储库。

通过此 proxy/mirror 在本地构建工作正常,但是当尝试在 Bamboo(没有互联网访问权限)上 运行 npm install 时,它失败了,因为一些依赖尝试到达 GitHub 下载东西,但失败了。

error   06-feb-2015 13:29:29    npm http 200 https://nexus.shdir.no/content/groups/npm-all/mkdirp/-/mkdirp-0.3.0.tgz
error   06-feb-2015 13:29:30    npm http GET https://nexus.shdir.no/content/groups/npm-all/formidable
error   06-feb-2015 13:29:30    npm http 200 https://nexus.shdir.no/content/groups/npm-all/formidable
error   06-feb-2015 13:29:45    npm ERR! fetch failed https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz
error   06-feb-2015 13:29:55    npm http GET https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz
error   06-feb-2015 13:30:16    npm ERR! fetch failed https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz
error   06-feb-2015 13:31:16    npm http GET https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz
error   06-feb-2015 13:31:37    npm ERR! fetch failed https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz
error   06-feb-2015 13:31:38    npm ERR! network connect ETIMEDOUT
error   06-feb-2015 13:31:38    npm ERR! network This is most likely not a problem with npm itself
error   06-feb-2015 13:31:38    npm ERR! network and is related to network connectivity.
error   06-feb-2015 13:31:38    npm ERR! network In most cases you are behind a proxy or have bad network settings.
error   06-feb-2015 13:31:38    npm ERR! network 
error   06-feb-2015 13:31:38    npm ERR! network If you are behind a proxy, please make sure that the
error   06-feb-2015 13:31:38    npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
error   06-feb-2015 13:31:38    
error   06-feb-2015 13:31:38    npm ERR! System Windows_NT 6.1.7601
error   06-feb-2015 13:31:38    npm ERR! command "C:\Program Files\nodejs\\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "install"
error   06-feb-2015 13:31:38    npm ERR! cwd E:\bamboo\UTV-FP-JOB1\code
error   06-feb-2015 13:31:38    npm ERR! node -v v0.10.17
error   06-feb-2015 13:31:38    npm ERR! npm -v 1.3.8
error   06-feb-2015 13:31:38    npm ERR! syscall connect
error   06-feb-2015 13:31:38    npm ERR! code ETIMEDOUT
error   06-feb-2015 13:31:38    npm ERR! errno ETIMEDOUT

我该如何解决这个问题?我是否必须将 github/bitbucket 中的每个存储库添加到 Nexus?

您必须使 Nexus 可用于您的 Bamboo 服务器并在那里配置 npm,就像您在工作站上所做的那样。根据可能需要不同步骤的网络拓扑安装 Bamboo 和 Nexus 的位置。

理想情况下,您的存储库管理器和 CI 服务器位于同一位置,并且彼此之间具有高性能连接。这允许快速下载代理包以及快速部署。

例如,您可以让您的 Nexus 在 public 互联网上可用,并将其锁定以仅允许经过身份验证的访问,然后像从 Bamboo 中那样使用它。

我们通过手动下载二进制文件并将它们添加到我们的 Apache 服务器解决了这个问题。更新依赖项时不会很有趣,但应该不会太糟糕。只有 3 个文件。

如果有人知道,我很乐意使用更好的解决方案。