Дженкинс не может клонировать репозиторий Git через Git / SSH в Windows

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

Démarré par l'utilisateur anonymous
Checkout:book / C:Jenkinsworkspacebook - hudson.remoting.LocalChannel@1da691a
Using strategy: Default
Last Built Revision: Revision 5d7ce4ae23c91fb201ee005e6db17bcd795ca965 (origin/HEAD, origin/master)
Checkout:book / C:Jenkinsworkspacebook - 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:Gitbingit.exe clone --progress -o origin git@github.com:zeljkofilipin/watirbook.git C:Jenkinsworkspacebook
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.invoke(GitSCM.java:1042)
    at hudson.plugins.git.GitSCM.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)
  • Я могу клонировать репозиторий через Git только для чтения URL git://github.com/zeljkofilipin/watirbook.git от Дженкинса на обеих машинах
  • Я могу клонировать через Git / SSH URL git@github.com:zeljkofilipin/watirbook.git из командной строки на обеих машинах
  • Я могу клонировать через Git / SSH URL от Дженкинса на 32-битной машине, но не на 64-битной машине.

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

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

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

8 ответов


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

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

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

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


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


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

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


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

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

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

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


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


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


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

Я подтвердил, что cmd / git.exe работал иначе, чем bin/git.exe из обоих командной строки и с временным заданием Дженкинса, используя команду git (вместо РЕПО scm).


https://wiki.jenkins-ci.org/display/JENKINS/GitHub + плагин

просто добавьте вход пользователя с поддержкой ssh в Jenkins, и он должен работать гладко.