Дженкинс не может клонировать Git-репозиторий поверх Git / SSH в Windows - PullRequest
20 голосов
/ 21 октября 2011

Я успешно клонировал Git-репозиторий в Jenkins через Git / SSH в Windows 2008, 32-разрядная версия.Когда я пытался сделать то же самое в 64-разрядной версии Windows 2008, страница Консольный вывод застревает здесь:

Démarré par l'utilisateur anonymous
Checkout:book / C:\Jenkins\workspace\book - hudson.remoting.LocalChannel@1da691a
Using strategy: Default
Last Built Revision: Revision 5d7ce4ae23c91fb201ee005e6db17bcd795ca965 (origin/HEAD, origin/master)
Checkout:book / C:\Jenkins\workspace\book - hudson.remoting.LocalChannel@1da691a
Cloning the remote Git repository
Cloning repository origin

Когда я прекращаю сборку (после нескольких минут застрять там)), Я получаю остальное сообщение об ошибке:

ERROR: Error cloning remote repo 'origin' : Could not clone git@github.com:zeljkofilipin/watirbook.git
ERROR: Cause: Error performing command: C:\Git\bin\git.exe clone --progress -o origin git@github.com:zeljkofilipin/watirbook.git C:\Jenkins\workspace\book
null
Trying next repository
ERROR: Could not clone repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1042)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:968)
    at hudson.FilePath.act(FilePath.java:785)
    at hudson.FilePath.act(FilePath.java:767)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:968)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1193)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:567)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:455)
    at hudson.model.Run.run(Run.java:1404)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:230)
  • Я могу клонировать репозиторий через URL-адрес Git только для чтения git://github.com/zeljkofilipin/watirbook.git от Jenkins на обеих машинах
  • Я могуклонировать через Git / SSH URL git@github.com:zeljkofilipin/watirbook.git из командной строки на обеих машинах
  • Я могу клонировать через Git / SSH URL от Jenkins на 32-битной машине, но не на 64-битной машине.

Единственное различие, которое я могу заметить между двумя машинами (не считая того, что одна - это виртуальная машина на моем ноутбуке, а другая - настоящая машина в Швейцарии), заключается в том, что первая - 32-разрядная, а вторая - вторая.64-битный.

Не уверен, что это может быть связано, но 32-битный компьютер имеет местоположение, установленное в Хорватии, и 64-битный компьютер в Швейцарии (как вы можете видеть из вывода Git на французском языке).

Для получения дополнительной информации, пожалуйста, смотрите мой блог: Дженкинс, Windows и Git

Ответы [ 8 ]

27 голосов
/ 21 октября 2011

Я недавно прошел через эти боли. Особенно расстраивает отсутствие журналов ошибок в этом сценарии: возможно, потому, что MSysgit запрашивает пользователя на консоли при попытке восстановления - что не проходит через консоль Jenkins.

Исходя из моего опыта, вот несколько ключевых элементов, на которые стоит обратить внимание:

  1. смесь Msysgit и Cygwin установлена: MSysgit работал лучше для меня, но я полагаю, что вы используете это тоже
  2. некоторым людям больше везет с <MSYSGIT_ROOT>\cmd\git.cmd, чем <MSYSGIT_ROOT>\bin\git.exe
  3. убедившись, что ваш подчиненный работает как тот же пользователь (который не используется по умолчанию при установках на основе служб) .. - о, я вижу, вы тоже это получили
  4. настройка HOME переменная для расширений рабов Windows
  5. в основном убедитесь, что те же ключи .ssh достигаются под Дженкинсом.
  6. для отладки я нашел полезным создать тестовое задание без SCM, но запустить git clone в шаге сборки «Execute shell / batch». Это должно раскрыть немного больше информации. Кстати, вы можете сделать env на том же шаге и, возможно, ls %HOME%/.ssh

Я думаю, что вышеизложенное дало мне возможность работать с 64-битным подчиненным Jenkins в Windows 7 с поддержкой git - хотя я думал, что это больше связано с некоторыми мелкими деталями конфигурации, чем с 64-битными и 32-битными. В любом случае, удачи!

6 голосов
/ 04 октября 2012

В последней версии git пришлось использовать% GIT_HOME% / cmd / git.exe вместо% GIT_HOME% / bin / git.exe и выяснить домашний каталог пользователя, запустившего службу jenkins.

3 голосов
/ 07 января 2014

Еще одна проблема, с которой я столкнулся, была в том, что ssh.exe не просматривал папку %userprofile%/.ssh для файлов ключей. Вместо этого он искал папку C:\Program Files (x86)\Git\.ssh, которая была пуста и вызывала зависание из-за запроса аутентификации ssh на компьютере, где находится git repo.

Мы просто скопировали файлы ключей в %userprofile%/.ssh в C:\Program Files (x86)\Git\.ssh, и проблема решена.

2 голосов
/ 02 мая 2013

Заметки из усвоенного урока. У меня были проблемы с установкой ssh ​​для работы с Jenkins в качестве именованной учетной записи пользователя ssh + git.

Вот что мне нужно было сделать, чтобы решить проблему:

  1. Сгенерируйте ключ с помощью ssh-keygen (обратите внимание, где они находятся)
  2. Установите "HOME" в этом месте

Я пробовал с puttygen и GET_SSH = plink, что все очень плохо, но без явных ошибок.

0 голосов
/ 02 сентября 2016

https://wiki.jenkins -ci.org / дисплей / Дженкинс / GitHub + Plugin

Просто добавьте вход в систему с поддержкой ssh ​​в Jenkins, и он должен работать без сбоев.

0 голосов
/ 04 января 2016

Поскольку мой Windows Jenkins был ведомым, мне нужно было настроить этот узел для поиска git в cmd вместо bin, как описано в inger. Для этого перейдите в «Управление Jenkins», «Управление узлами», щелкните по соответствующему узлу, нажмите «Настроить», а затем перейдите в раздел «Расположение инструментов». Найдите git в раскрывающемся списке и укажите путь к git.exe (включая git.exe), например C: \ Program Files \ Git \ cmd \ git.exe.

Я подтвердил, что cmd / git.exe работал не так, как bin / git.exe из командной строки и с временным заданием jenkins с использованием команды git (вместо scm-репо).

0 голосов
/ 16 октября 2014

Если ваша учетная запись привязана к домену.Тогда вам нужно убедиться, что пользователь, для которого работает подчиненный Jenkins.Для этого откройте Настройки -> Свойства "Jenkins Slave" -> Вход в систему .и выберите необходимое пользователь из домен для правильного выполнения.

0 голосов
/ 04 марта 2014

Когда вам нужно использовать какие-либо параметры конфигурации из файла конфигурации для каждого пользователя, например.~ / .ssh / config вы можете поместить их в C: \ Program Files (x86) \ Git \ etc \ ssh \ ssh_config, файлы ключей можно поместить в C: \ Program Files (x86) \ Git.ssh

...