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

Дженкинс висит на "Извлечение вверх по течению от источника"

Я пытаюсь настроить Jenkins на машине Windows Server 2012, и у меня много трудностей.

Что я сделал:

  • Создан без пароля id_rsa и id_rsa.pub
  • Создал файл known_hosts для bitbucket.org с помощью ssh.exe -T bitbucket.org и принял для добавления хоста.
  • Добавлен E: в Системную переменную HOME
  • Я добавил эти файлы в C:/Windows/SysWOW64/config/systemprofile/.ssh, а также E:/.ssh
  • Я связал свой открытый ключ с Bitbucket как ключ развертывания.
  • Я проверил тройные проверки всех моих URL-адресов, имен пользователей и т.д.
  • Я даже вручную вытащил из репозитория для установки начальной базы в C:/Program Files (x86)/Jenkins/jobs/MyProject/workspace/

И все же он все еще висит на

Building in workspace C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace
Checkout:workspace / C:\Program Files (x86)\Jenkins\jobs\MyProject\workspace - [email protected]
Using strategy: Default
Fetching changes from 1 remote Git repository
Fetching upstream changes from origin

Я дал ему около 20 минут, так что это не скорость и размер проблемы репо. Если я отменил, это то, что возвращается:

ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Error performing command: C:\Program Files     (x86)\Git\bin\git.exe fetch -t origin +refs/heads/*:refs/remotes/origin/*
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:780)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommand(CliGitAPIImpl.java:739)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.fetch(CliGitAPIImpl.java:160)
at hudson.plugins.git.GitAPI.fetch(GitAPI.java:230)
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:793)
at hudson.plugins.git.GitSCM.access$000(GitSCM.java:57)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:976)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
at hudson.FilePath.act(FilePath.java:865)
at hudson.FilePath.act(FilePath.java:838)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1364)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:670)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:575)
at hudson.model.Run.execute(Run.java:1575)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:237)
Caused by: java.lang.InterruptedException
at java.lang.ProcessImpl.waitFor(Native Method)
at hudson.Proc$LocalProc.join(Proc.java:319)
at hudson.Launcher$ProcStarter.join(Launcher.java:360)
at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:769)
... 19 more
ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:981)
at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
at hudson.FilePath.act(FilePath.java:865)
at hudson.FilePath.act(FilePath.java:838)
at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1364)
at     hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:670)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:575)
at hudson.model.Run.execute(Run.java:1575)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:237)

Я нахожусь здесь, поэтому я ценю всю помощь, которую я могу получить. Вот несколько статей, которые я пробовал без улучшения.

Аутентификация Jenkins CI для частного репозитория Github

Запрещено (публиковать) при настройке Jenkins

Hudson Git Плагин не работает с окнами

http://computercamp.cdwilson.us/jenkins-git-clone-via-ssh-on-windows-7-x64

4b9b3361

Ответ 1

Вот как я исправил аналогичную проблему:

Msysgit устанавливает два git.exe. Один под C:\Program Files (x86)\Git\bin и второй под C:\Program Files (x86)\Git\cmd. Первый нельзя использовать с Дженкинсом. Он будет висеть после завершения работы. Второй работает отлично.

Обновите настройки Jenkins Git, чтобы указать правильный cmd\git.exe и наслаждайтесь!

Ответ 2

Вот как я это решил:

Я запустил инструмент sysinternals psexec, чтобы создать CMD, который запущен под учетной записью LocalSystem (такая же учетная запись, как служба jenkins)

PSEXEC -i -s -d CMD

В этой подсказке cmd я выполнил ту же команду git из каталога рабочей области, что и выполняются зависающие процессы GIT.exe. Например.

d:\Programs\Jenkins\jobs\jobname\workspace > D:\Programs\ Git\bin\git.exe fetch -t ssh + git://[email protected]: 9360/data/gitpub/myRepository.git + refs/heads/: refs/remotes/origin/

Et voila: мне было предложено ввести "да", чтобы добавить ключ SSH к известному списку известных хостов.

Ответ 3

Просто запомните замораживание в 'Извлечение восходящего потока из источника'.

Запуск Jenkins как службы на компьютере под управлением Windows кажется (из того, что я испытал) иметь проблемы при использовании SSL.

Обходное решение]

  • Измените службу Jenkins для запуска под локальной учетной записью.
  • Убедитесь, что ваша учетная запись локального администратора настроена на выполнение взаимодействия Git с SSH.
  • Перезапустите Jenkins (подробнее).
  • Если Jenkins не запускается, у него возникли проблемы с попыткой извлечь из Git. Вручную убить Git и ssh процессы, убить java.exe от Jenkins и вручную запустить службу Jenkins.

Подробнее о том, почему я выбираю это решение]

Я выполнил другие шаги, прежде чем настраивать авторизованный хост, чтобы принять сервер и зарегистрировать ключ Jenkins на сервере, чтобы разрешить соединение. Я убедился, что успешно выполнил действия Git под учетной записью Local System (которая была запущена службой Jenkins). Тем не менее, выборка замерзнет. Чтобы проверить, что мои настройки Git и SSL были настроены правильно, я даже перешел в первоначально настроенный репозиторий Git в каталог заданий Jenkins и выполнил успешный запрос на выгрузку под учетной записью локальной системы. Это сработало; поэтому клавиши были правильно настроены.

Я забыл, где я это прочитал, но я слышал, что возникают проблемы при работе с Git/SSH в локальной системе. С этими знаниями я играл со средой Git и менял переменную среды GIT_SSH, чтобы использовать plink (с комбинацией Putty, чтобы запомнить серверный ключ, puttygen, чтобы преобразовать ключ OpenSSL в ключ Putty и pageant для запоминания моих ключей) для plink. Как только я получил его, работая с plink, я не нашел его полезным решением. Я хочу правильно использовать plink, мне также нужно было запустить showant под моей локальной системной учетной записью, чтобы служба Jenkins правильно согласовывала вызовы SSH. Подумав, как правильно настроить свое начальное состояние при перезагрузке, я не хотел прикладывать все усилия, чтобы просто работать с SSH-соединением.

Вместо этого я решил, что проще было запустить Jenkins под учетной записью локального администратора, которая также была настроена для работы с сервером Git. Не нужно иметь дело с настроенными SSH-ключами для локальной системной учетной записи, и мои действия Git работали нормально.


Примечание. Ответ Дэвид Гагеот может применяться к некоторым. Мне не пришлось изменять какие-либо из моих настроек Git, так как при установке Git я выбираю опцию Run Git from the Windows Command Prompt, которая сопоставляет путь к каталогу C:\Program Files (x86)\Git\bin\cmd\.

Ответ 4

Еще одна ссылка, которую я нашел очень полезной при настройке jenkins на windows, особенно при использовании установщика MSI, такова: http://opensourcetester.co.uk/2013/06/28/jenkins-windows-ssh/

И еще одна вещь, которую я не нашел очевидной: вам нужно использовать SSH-url при подключении к Github вместо стандартного https one. Надеюсь, это сэкономит время кому-то.

Ответ 5

У меня была такая же проблема на моем ноутбуке, и я смог найти решение, однако это действительно применимо только в том случае, если вы используете войну Jenkins в веб-контейнере Tomcat, который настроен как служба Windows.

Мне просто нужно было установить службу Tomcat для входа в систему как пользователя Windows вместо локальной системы.

Ответ 6

Для меня это были права на папку $HOME/.ssh и ее содержимое. После того, как он был установлен для конкретной группы пользователей, Jenkins смог получить изменения после перезапуска.

Ответ 7

Версия 2.6.1 клиента Git для Windows устраняет эту проблему в Jenkins. Теперь "Извлечение восходящего потока из источника" не имеет задержки.

Я использую Git cmd в Jenkins из:

C:\Program Files\ Git\cmd\git.exe

Ответ 8

Я потратил несколько часов, пытаясь понять это, и выяснил, что добавление пароля к URL-адресу репо исправляло проблему:

https://USERNAME:[email protected]/REPO.git

Обратите внимание на : между именем пользователя и паролем