Как настроить плагин Hudson и git с ключом SSH - PullRequest
15 голосов
/ 15 марта 2010

У меня есть Hudson (система непрерывной интеграции) с плагином git, работающим на Tomcat Windows Service. msysgit установлен и каталог bin msysgit находится в пути. PuTTY / Pageant / plink установлены, и msysgit настроен для их использования.

Когда я запускаю задание, которое пытается клонировать git-репозиторий, я получаю следующую ошибку:

$ git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" 
ERROR: Error cloning remote repo 'origin' : Could not clone git@hostname:project.git 
ERROR: Cause: Error performing git clone -o origin git@hostname:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace 
Trying next repository 
ERROR: Could not clone from a repository 
FATAL: Could not clone 
hudson.plugins.git.GitException: Could not clone 
  1. Запуск git clone -o origin git @ hostname: project.git "e: \ HUDSON_HOME \ jobs \ Project Trunk \ workspace" из командной строки работает без ошибок.
  2. Я подтвердил, что моя проблема не совпадает с Ошибка клона git Hudson , потому что git находится в пути, и я не получаю никакой ошибки в отношении исполняемого файла git на странице Configure System Hudson.

Это наводит меня на мысль, что проблема в том, что у пользователя, которому принадлежит служба Windows Tomcat / Hudson (локальная система), не настроен SSH-ключ для возможности клонирования репозитория git.

У меня вопрос, как я могу настроить все так, чтобы плагин git / msysgit знал, что нужно использовать определенный ключ SSH при попытке клонирования? Я не думаю, что Pageant будет работать, потому что служба Tomcat работает как пользователь «Локальной системы», но я могу ошибаться. Я попытался настроить Pageant как службу (используя runassvc.exe), передав соответствующий ключ и запустив его как «Локальная система». Похоже, что сервис Tomcat / Hudson не может увидеть ключ от сервиса театрализованного представления. Существуют ли другие способы настройки ключа?

Спасибо.

РЕДАКТИРОВАТЬ: обсуждение http://n4.nabble.com/Hudson-with-git-and-ssh-td375633.html показывает, что у кого-то еще был подобный вопрос. Был предложен ssh-agent, и этот инструмент поставляется с msysgit, но я не уверен, как использовать его вместе со службой Hudson. Тем не менее, хорошая подсказка, если кто-то может заполнить пробелы. Спасибо Питеру за комментарий со ссылкой.

Кроме того, обсуждение http://n4.nabble.com/questions-about-git-and-github-plug-ins-td383420.html начинается с того же вопроса. Я пытаюсь воскресить эту тему.

Ответы [ 4 ]

7 голосов
/ 23 декабря 2010

Еще одна важная заметка для окон (которую я хочу прикрепить к этому ответу, потому что я нашел этот вопрос очень быстро, но нашел дополнительную информацию, в которой я нуждался только после нескольких часов поиска):

Git хочет, чтобы переменная окружения% HOME% была установлена ​​в каталог вашего пользователя (IE C: \ Documents and Settings \ hudsonuser) ... вот как он может найти каталог .ssh с файлами ключей!

Я узнал об этом здесь из-за ошибки сервера (но у меня там недостаточно репутации, чтобы поднять голос).

6 голосов
/ 25 марта 2010

Мы используем Hudson, проверяя исходный код из git с помощью ключа ssh. Однако на самом деле у нас есть Hudson на сервере Ubuntu. Ssh-пара ключей Гудзона живет в ~hudson/id_rsa и ~hudson/id_rsa.pub

Итак, адаптируем наш совет для настройки Windows:

Разработчики нашей команды на базе Windows используют MSysGit и регулярно проверяют код через git over ssh, но не используют Putty / Pageant. Мы обнаружили, что Pageant был болезненным из-за некоторых ошибок протокола при входе в систему. Вместо этого они настроили git на использование openSSH (это один из вариантов во время установки). Их пара открытого / закрытого ключей тогда живет в ~username/id_rsa и ~username/id_rsa.pub, и все это работает.

Итак, я бы порекомендовал изменить ваш git config, чтобы использовать OpenSSH, а не Pageant. Если ничего другого, вам не нужно беспокоиться о начале конкурса.

Вы можете использовать PuttyGen для генерации ключа. Однако, если вы используете OpenSSH вместо Pageant, вам нужно будет экспортировать подходящий закрытый ключ (из одного из меню в верхней части PuttyGen) и сохранить его как id_rsa, а также скопировать и вставить открытый ключ из GUI PuttyGen (он показывает, но не сохраняет подходящую версию для OpenSSH) и сохраняет его как id_rsa.pub. Это потому, что Putty использует немного другой формат для ключа, чем OpenSSH.

В качестве альтернативы, конечно, вы всегда можете разместить свой сервер hudson на сервере Ubuntu (на реальном или через VirtualBox)

3 голосов
/ 06 августа 2011

Я обнаружил, что мне пришлось использовать другой метод, чтобы заставить это работать на Ubuntu (с Дженкинсом, а не с Гудзоном, хотя в остальном это выглядит в основном той же проблемой. Я проверял переменную окружения %HOME% через графический интерфейс Jenkins и это выглядело правильно.

Ключ, который я хотел использовать для идентификации Дженкинса в частном репозитории Github, уже существовал. Я скопировал их в /var/lib/jenkins/.ssh - и файл id_rsa, и файл id_rsa.pub для этого ключа и учетной записи.

Первоначально я скопировал их как "root", и они были недоступны для Дженкинс , поэтому я все еще получал ошибки (сбивающие с толку ошибки заставляли меня вводить фразу-пароль, когда ее не было). Поэтому я сделал chown, chmod и chgrp, чтобы установить их как Jenkins .

Я проверил это, выполнив клон git, когда вошел в систему как пользователь Jenkins.

Я знаю, что этот путь специфичен для Ubuntu, но аналогичная настройка, обеспечивающая доступность файлов ключей в нужном месте и тестирование в командной строке, просто выполняющее git clone git:myrepo, может, по крайней мере, определить, где Windows отличается.

0 голосов
/ 18 августа 2014

поместите вашу папку .ssh в

C: \ Windows \ SysWOW64 \ config \ systemprofile

или

C: \ Windows \ System32 \ Config \ systemprofile

зависит от вашей системы 32 или 64.

Это каталог "USER" для "Local System".

...