Как устранить исключение тайм-аута, когда TeamCity извлекает изменения из репозитория SSH Git - PullRequest
9 голосов
/ 08 августа 2011

Я переместил Git-репозиторий из общей папки в сети на SSH-сервер, на котором запущен gitolite.Я добавил открытый / закрытый ключ для использования TeamCity и указал на него корень VCS.Все это работает нормально, так как Тестовое соединение успешно и моя конфигурация сборки показывает ожидающие изменения.

Однако, когда TeamCity пытается извлечь эти ожидающие изменения, я получаю следующую ошибку:

'git fetch' command failed.
exception: Timeout exception

Переключение на подробное ведение журнала. Я вижу, что оно истекло по истечении 90 секунд - при нормальных обстоятельствах я ожидаю, что для извлечения этих изменений потребуется несколько секунд.

С момента запускапытаясь устранить проблему, я изменил мой корень VCS на «Закрытый ключ по умолчанию» и добавил требуемую папку .ssh с файлами config, id_rsa и known_hosts.Я видел отпечатки пальцев, а затем сообщения о паролях в журнале, пока не поместил необходимые файлы в эти файлы, и теперь мой сервер снова вернулся к выдаче исключения Timeout, как это происходит при указании ключа в корне VCS.

Если я запускаю Git из командной строки, я могу клонировать репозиторий без каких-либо запросов (когда у меня установлена ​​папка .ssh, как указано выше).Это из другой учетной записи пользователя, поскольку TC работает как служба под учетной записью SYSTEM по умолчанию, но я не думаю, что это является причиной, потому что, как я уже сказал, я вижу, что TC подобрал изменения в папке .ssh для этого.аккаунт.

Что может быть не так?

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

Вы настроили ключи для сервера TeamCity, но вы также сделали это для агента?Это объясняет, почему в конфигурации работает тестовое соединение, но оно не работает во время выполнения агента.

Быстрый способ устранения проблемы:

В настройках VCS измените VCS Checkout mode до Automatically on server и посмотреть, работает ли?

Обновление:

Можете ли вы войти на сервер TeamCity и запустить manula git clone из вашего репозитория git как пользователь teamcity?Таким образом, вы сможете увидеть, как он работает, а также сохранить его в качестве доверенных хостов и т. Д.

0 голосов
/ 07 октября 2016

Это происходит, когда у вас огромный репо.Вы можете следовать следующим рекомендациям :

Увеличение времени ожидания на компьютере пользователя для OSX или Linux:

  1. Создание файла ~ / .ssh / config (если это не такеще не существует)
  2. Добавьте в файл настройки SSH ServerAliveInterval ServerAliveCountMax, например:

Host *ServerAliveInterval 86400ServerAliveCountMax 4

0 голосов
/ 25 июня 2012

Я не использовал team city, но я использовал GO (из мысли) для непрерывной интеграции, где я столкнулся с похожей проблемой.

Можете ли вы проверить путь к переменной среды для пользователя, который запускаетзадание на агенте сборки.Если вы используете msysgit, папка bin и cmd из msysgit должна быть в пути.

...