2012-05-24 2 views
2

Проблема проста: к главному хранилищу git можно получить доступ Jenkins с ssh: // ci_ro @ server (хорошо работает), но у меня есть подмодули, URL которых отличается : ssh: // server (без определения какого-либо пользователя, это позволит разработчикам работать с этим репо и его подмодулями). Мне определенно не разрешено (и, откровенно говоря, не хочу) компилировать CI-специфичные файлы .gitmodule (это нарушит репозитории разработчиков), поэтому даже не упоминайте об этом. Так Дженкинс может потянуть главный репозиторий, но сразу же выдает:Jenkins, git, подмодули с пользовательским URL (SSH)

Caused by: hudson.plugins.git.GitException: Command "git submodule update --init --recursive" returned status code 1: Cloning into blah/blah... 
Host key verification failed. 
fatal: The remote end hung up unexpectedly 
Clone of 'ssh://server:someport/blah/blah...' into submodule path 'blah/blah' failed 

Мой вопрос: можно ли сказать Дженкинс использовать SSH: // ci_ro @ сервер ... префикс URL для подмодулей вместо настроенных в них .gitmodules? Или любые другие обходные пути, плагины или хаки? Я просмотрел варианты работы и не нашел полезного варианта.

UPDATE

Спасибо за помощь, ребята. Разрешение состояло в том, чтобы позволить пользователю системы «jenkins» выйти из конкретного ssh-сервера/порта с git.

+1

Если вы решили свою проблему, пожалуйста, [ответьте на свой вопрос] (http://meta.stackexchange.com/questions/16930/is-it-ok-to-answer-your-own-question-and -принять-это) и принять его, чтобы он помогал другим в будущем. –

ответ

3

Резолюция должна была позволить пользователю системы запускать Jenkins с SSH с указанных хостов/портов.

+0

Это означает создание ключей ssh ​​для jenkins и добавление открытого ключа в github – voila

+0

Спасибо большое за ваше решение – voila

1

Вы всегда можете сделать это вручную с этапа сборки оболочки.

+0

Сборка _immidiately_ зависает в начале, поэтому нет возможности для шагов сборки. Кроме того, отключение рекурсивного обновления подмодуля не помогает. – gyorgyabraham

+0

Я имею в виду не использовать плагин вообще. –

0

Попробуйте изменить/и т.д./SSH/ssh_config на сервере сборки:

StrictHostKeyChecking no 
0

В вашем шаге сборки, сделать

git submodule init 

затем рекурсия через подмодули и корректировать свои пульты, это это не правильно, но сценарий я, когда мой GitHub имя пользователя изменено было:

#!/bin/sh 
git remote -v | grep richoH | while read name url type; do 
    newurl=`echo $url | sed -e "s/richoH/richo/"` 
    git remote set-url $name $newurl 
done 

Затем сделать GIT submodul e update, которое, как мне кажется, не мешает пультам. Это непроверено, но я считаю звук.

Смежные вопросы