Search code examples
npmcloud-foundryibm-cloud

Bluemix node buildpack and modules in private repos


My node.js app uses a number of private shared modules hosted in git repos. I use git URLs like below in the dependencies block in package.json:

"xxx-accountMgr": "git+ssh://[email protected]:xxx/lib-account-mgr.git",

when "cf push" this errors during npm install on ssh:

npm ERR! git clone --template=/home/vcap/.npm/_git-remotes/_templates --mirror ssh://[email protected]/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

i expected this as I haven't configured the ssh key in bluemix. is that possible? if not, what's the alternative to install modules from a private repo in bluemix?


Solution

  • If you are downloading a private module hosted on Git, you should be able to use https protocol (with creds) to access it.

    There is a trick that could help avoid this issue if that is not an option for you:

    1) Package private modules with your application (in node_modules)

    2) Move the private modules to devDependencies in package.json, rather than dependencies, so that your local dev workflow is unaffected.

    npm install will install dependencies and devDependencies. By default, Bluemix will only install dependencies

    Step 2 is necessary because even if you package the private node_modules with your application, staging for your application will fail because npm still tries to access your private repo to validate the dependency.

    Also, if you had a .cfignore file ignoring the entire node_modules directory, that would have to be changed to ignore only the public modules.