2015-05-14 3 views
2

В настоящее время мы используем GitLab для управления нашими репозиториями и GitLab CI в качестве нашего CI.GitLab + GitLab CI + зависимые проекты SSH через NPM

У меня есть проект, который включает в себя другой проект GitLab как зависимость (через NPM). Проект является внутренним, а URL-адрес в package.json начинается с git+ssh://[email protected], что мы и используем на наших локальных машинах. У нас есть ключи SSH.

Однако GitLab CI, похоже, не может использовать этот же механизм для установки этого зависимого проекта (через npm install).

Ошибки я получаю:

npm install 
npm ERR! git clone [email protected]:developers/my-repo.git Cloning into bare repository '/home/gitlab_ci_runner/.npm/_git-remotes/git-my-domain-com-developers-my-git-26043eba'... 
npm ERR! git clone [email protected]:developers/my-repo.git 
npm ERR! git clone [email protected]:developers/my-repo.git Host key verification failed. 
npm ERR! git clone [email protected]:developers/my-repo.git fatal: The remote end hung up unexpectedly 
npm ERR! Error: Command failed: Host key verification failed. 
npm ERR! fatal: The remote end hung up unexpectedly 
npm ERR! 
npm ERR!  at ChildProcess.exithandler (child_process.js:658:15) 
npm ERR!  at ChildProcess.emit (events.js:98:17) 
npm ERR!  at maybeClose (child_process.js:766:16) 
npm ERR!  at Socket.<anonymous> (child_process.js:979:11) 
npm ERR!  at Socket.emit (events.js:95:17) 
npm ERR!  at Pipe.close (net.js:466:12) 
npm ERR! If you need help, you may report this *entire* log, 
npm ERR! including the npm and node versions, at: 
npm ERR!  <http://github.com/npm/npm/issues> 

npm ERR! System Linux 3.2.0-68-generic 
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" 
npm ERR! cwd /home/gitlab_ci_runner/gitlab-ci-runner/tmp/builds/project-9 
npm ERR! node -v v0.10.37 
npm ERR! npm -v 1.4.28 
npm ERR! code 128 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /home/gitlab_ci_runner/gitlab-ci-runner/tmp/builds/project-9/npm-debug.log 
npm ERR! not ok code 0 

Что нам не хватает? Мне нужно решение, которое не требует от меня изменить URL-адрес в package.json.

ответ

0

Вы должны поместить правильный хост (my.domain.com) в свой ~/.ssh/known_hosts на сервере CI.

Обычно просто удаляя линию с помощью ключа от ~/.ssh/known_hosts, а затем ssh вставляя в нее хотя бы один раз, чтобы кешировать ключ.