私有存储中的Bluemix节点buildpack和模块

时间:2015-06-19 20:04:18

标签: npm cloudfoundry ibm-cloud

我的node.js应用使用了git repos中托管的多个私有共享模块。我在package.json中的依赖项块中使用如下所示的git URL:

"xxx-accountMgr": "git+ssh://git@github.xxx.ibm.com:xxx/lib-account-mgr.git",

当" cf push"在ssh上安装npm期间出现此错误:

npm ERR! git clone --template=/home/vcap/.npm/_git-remotes/_templates --mirror ssh://git@github.xxx.ibm.com/ipaas/lib-account-mgr.git /home/vcap/.npm/_git-remotes/ssh-git-github-xxx-ibm-com-xxx-lib-account-mgr-git-bf65c10c: ssh: Could not resolve hostname github.xxx.ibm.com: Name or service not known

我预计这是因为我还没有在bluemix中配置ssh密钥。那可能吗?如果没有,那么在bluemix中从私人仓库安装模块的替代方法是什么?

5 个答案:

答案 0 :(得分:3)

如果您正在下载Git上托管的私有模块,您应该能够使用https协议(带信用卡)来访问它。

如果不适合您,有一个技巧可以帮助避免此问题:

1)将私有模块打包到您的应用程序(在node_modules中)

2)将私有模块移至package.json中的devDependencies,而不是dependencies,以便您的本地开发工作流不受影响。

  

npm install将安装dependenciesdevDependencies。通过   默认情况下,Bluemix只会安装dependencies

步骤2是必要的,因为即使您将私有node_modules打包到您的应用程序,您的应用程序的暂存也将失败,因为npm仍然尝试访问您的私有仓库以验证依赖项。

此外,如果您有一个忽略整个.cfignore目录的node_modules文件,则必须将其更改为仅忽略公共模块。

答案 1 :(得分:1)

如果私有存储库需要Github身份验证来访问共享的mdoules,Bluemix将无法访问它们。您可以使用git clone https://github.com/repo/etc之类的命令,但这需要无需身份验证即可访问文件。

另一种方法是在使用cf push之前手动安装您的仓库中的文件,以便它们可用。这不是一个很好的解决方案,但它可以在短期内解决问题。

答案 2 :(得分:1)

这里的问题是Bluemix无法回到企业网络,这显然是你的github repo所在的地方。

它与身份验证无关,尽管其他人在此处所说的对于公开可访问的git存储库来说是准确的

答案 3 :(得分:0)

这是一个解决方法,对我有用的是使用npmjs私有模块。一方面它可以工作,另一方面它很容易管理版本,并重用代码。当然,你需要做一些小改动,但是完全值得。

  1. 升级您的npmjs帐户以使用私有模块:https://www.npmjs.com/private-modules

  2. 在您的计算机上登录npmjs: npm login

  3. 发布您的模块

  4. 将npmrc文件复制到项目中: cp ~/.npmrc /path/to/your/project

  5. npm install your_module --save

  6. 享受!

  7. 请注意,如果您更改密码,.npmrc内的令牌将被撤销。

      

    令牌不是来自您的密码密码,而是更改   您的密码将使所有令牌无效。令牌有效   直到密码更改。您也可以使单个令牌无效   通过注销使用该令牌登录的计算机。

    来源:https://docs.npmjs.com/private-modules/ci-server-config#checking-in-your-npmrc

答案 4 :(得分:0)

您还可以使用cfnpm模块(https://www.npmjs.com/package/cfnpm)来处理cliud代工厂中的私有包