Подтвердить что ты не робот

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

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

Démarré par l'utilisateur anonymous
Checkout:book / C:\Jenkins\workspace\book - [email protected]
Using strategy: Default
Last Built Revision: Revision 5d7ce4ae23c91fb201ee005e6db17bcd795ca965 (origin/HEAD, origin/master)
Checkout:book / C:\Jenkins\workspace\book - [email protected]
Cloning the remote Git repository
Cloning repository origin

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

ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:zeljkofilipin/watirbook.git
ERROR: Cause: Error performing command: C:\Git\bin\git.exe clone --progress -o origin [email protected]: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)
  • Я могу клонировать репозиторий через Git URL-адрес только для чтения git://github.com/zeljkofilipin/watirbook.git от Jenkins на обеих машинах
  • Я могу клонировать через Git/SSH URL [email protected]:zeljkofilipin/watirbook.git из командной строки на обеих машинах
  • Я могу клонировать через Git/SSH URL-адрес от Jenkins на 32-битной машине, но не на 64-битной машине.

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

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

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

4b9b3361

Ответ 1

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

Основываясь на моем опыте, вы найдете несколько ключевых элементов для просмотра:

  • было установлено сочетание как Msysgit, так и Cygwin: MSysgit работал лучше для меня, но я полагаю, вы тоже это используете.
  • некоторым людям повезло с <MSYSGIT_ROOT>\cmd\git.cmd чем <MSYSGIT_ROOT>\bin\git.exe
  • убедитесь, что ваш ведомый работает как один и тот же пользователь (который не является стандартным для служб на основе установки).. - О, я вижу, вы тоже это сделали
  • параметр HOME переменная для уязвимости окон.
  • в основном убедитесь, что те же самые ключи .ssh, когда под Jenkins.
  • для отладки я счел полезным создать тестовое задание без SCM, но запустите git clone на этапе сборки "Выполнение оболочки/партии". Это должно показать немного больше информации. BTW, вы можете сделать env на том же шаге и, возможно, ls %HOME%/.ssh

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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