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

Дженкинс тайм-аут, получая от Гитуба за 10 минут.

Я столкнулся с этой проблемой при настройке Jenkins для Nightly build. Обратите внимание, что проект репозитория "project1" большой и составляет около 900 МБ. Пожалуйста, дайте мне знать, как мне решить эту проблему.

Started by user anonymous
Building in workspace C:\Users\user1\.jenkins\jobs\Nightly Build\workspace
Fetching changes from the remote Git repository
Fetching upstream changes from [email protected]:MyOrg/projectgroup/project1
ERROR: Timeout after 10 minutes
FATAL: Failed to fetch from [email protected]:MyOrg/projectgroup/project1
hudson.plugins.git.GitException: Failed to fetch from [email protected]:MyOrg/projectgroup/project1
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:612)
    at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:836)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:861)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1412)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:652)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:557)
    at hudson.model.Run.execute(Run.java:1679)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:509)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:230)
Caused by: hudson.plugins.git.GitException: Command "fetch -t [email protected]:MyOrg/projectgroup/project1 +refs/heads/*:refs/remotes/origin/*" returned status code -1:
stdout: 
stderr: 
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:981)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:920)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.fetch(CliGitAPIImpl.java:187)
    at hudson.plugins.git.GitAPI.fetch(GitAPI.java:229)
    at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:610)
    ... 10 more
4b9b3361

Ответ 1

Я собирался использовать Обходное решение №2, но, похоже, плагин 2.03 теперь может быть настроен в пользовательском интерфейсе, хотя он немного скрыт и предназначен для каждого проекта.

Перейдите на экран конфигурации для раздела "Управление исходным кодом", "Git", "Дополнительные поведения", "Добавить", "Расширенное поведение клонов", "Тайм-аут" (в минутах) для операции клонирования и выборки.

Я бы использовал обходной путь №2, предложенный DevHopeful_2012, если вы хотите глобальную настройку.

Ответ 2

Похоже, это известная проблема. См. JENKINS-20445, JENKINS-20387 и несколько других проблем, которые, похоже, появляются.

В соответствии с этими отчетами об ошибках это происходит только в новой версии плагина Git, поэтому вы можете понизить или попробовать некоторые обходные пути:


Обходной путь №1 - создайте локальный пустой клон для сокращения времени, как указано здесь.

Если у вас есть только 30 кбит/с пропускной способности от Jenkins к вашему репозиторию Git, вы, вероятно, должны рассмотреть клонирование пустой копии хранилище к центральному местоположению на сервере Jenkins, затем выполните клон с "Продвинутым поведением клона" для использования ссылки репозиторий. Это значительно сократит объем данных передается с сервера Git на Jenkins.

На моей машине Debian Jenkins я делаю это с помощью:

$ sudo mkdir -p /var/cache/git/mwaite
$ sudo chown mwaite.mwaite /var/cache/git/mwaite
$ cd /var/cache/git/mwaite
$ git clone --bare https://github.com/jenkinsci/jenkins.git

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


Обходной путь # 2 - увеличить таймаут, чтобы завершить длительный процесс начального клонирования, используя свойство Git.timeOut:

java -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=60 -jar jenkins.war

Этот вопрос SO является хорошим примером того, как установить свойства для службы Jenkins. Также обратите внимание, что это значение находится в минутах, а не секундах. Это обходное решение предоставлено David.


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

Ответ 3

ТОЛЬКО WINDOWS

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

По умолчанию установщик Jenkins устанавливает Jenkins для запуска в качестве службы, который работает как "Локальная учетная запись системы", а не ваша учетная запись пользователя. поскольку "Локальная системная учетная запись" не содержит ключей SSH или known_hosts "git clone" завершится с ошибкой.

Вы можете просто скопировать C:\Program Files (x86)\ Git \. ssh в C:\Windows\SysWOW64\config\systemprofile \.ssh( "Локальная система" счет "домой)

Кроме того,

ВАЖНО: убедитесь, что у ваших ssh-ключей нет пароля! Дженкинс будет отображаться, когда он клонирует репозиторий, но на самом деле его ssh блокировка в фоновом режиме, ожидающая ввода пароля.

Подробные инструкции в http://computercamp-cdwilson-us.tumblr.com/post/48589650930/jenkins-git-clone-via-ssh-on-windows-7-x64

Ответ 4

Я только что нашел решение для jenkins timout # 10 min errors. Эта ошибка исходила из-за низкого подключения к Интернету или, возможно, размер вашего проекта в github был большим, поэтому jenkins не смог загрузить этот проект с сервера git. Для решения проблемы нам нужно отредактировать "Дополнительные действия" в git в конфигурации проекта jenkins и увеличьте "Тайм-аут (в минутах) для операций клонирования и выборки" до "60" или "120" минут. Итак, теперь, когда jenkins клонируют проект git с сервера git, достаточно времени для загрузки/клонирования проекта с сервера git.

Ответ 5

В Ubuntu 14.04 lts

Goto/etc/default/jenkins редактировать с vi или gedit

обновить java orgs, как показано ниже

Перед обновлением это будет похоже на JAVA_ARGS = "- Djava.awt.headless = истина"

Обновление, как показано ниже JAVA_ARGS = "- Djava.awt.headless = true -Dorg.jenkinsci.plugins.gitclient.Git.timeOut = 30"

и перезапустите jenkins как

sudo/etc/init.d/jenkins start

Ответ 6

Обходной путь №2 работал у меня, мне пришлось изменить файл jenkins.xml.

В Windows:

  • Перейдите к C:\Program Files (x86)\Jenkins
  • открыть jenkins.xml файл
  • добавить -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=60 внутри тега <arguments>

Так моя конфигурация выглядит как

До:

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

После:

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -Dorg.jenkinsci.plugins.gitclient.Git.timeOut=60 -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>

Ответ 7

На CentOS/RedHat 7.4 Linux с Jenkins-2.138

Отредактируйте /etc/sysconfig/jenkins, измените JENKINS_ARGS (последняя строка) с настройкой tiomeout, упомянутой другими в их ответах:

# Pass arbitrary arguments to Jenkins.
# Full option list: java -jar jenkins.war --help
#
JENKINS_ARGS="-Dorg.jenkinsci.plugins.gitclient.Git.timeOut=25"