2014-11-11 6 views
2

У меня есть Windows 8 jenkins slave (действительно более одного), и я хочу иметь задачу, которая клонирует зеркало git-репозитория, если оно не существует и всегда получает последние.Почему эта работа дженкинсов никогда не заканчивается?

Я получил это 'выполнить окна пакетное' шаг:

if not exist "server-reference" (
    git clone --mirror [email protected]:something/somewhere.git server-reference 
) 
pushd server-reference 
git fetch --all 
popd 
exit /B %ERRORLEVEL% 

Выход консоли на работу добирается до этой точки

C: \ Дженкинс \ рабочее место \ вещи \ Сервер- ссылка> мерзавец принести --all
происхождения

выборка

и никогда не заканчивается

Если я переключу выход над выборкой, я получу ожидаемый выход.

И если я запускаю команды командного файла как пользователь jenkins в окне окна, все работает так, как ожидалось. Так что я (думаю я) знаю, что git fetch --all работает на ведомом без запроса ввода

Как изменить этот сценарий так, что он завершает, когда Дженкинс запускает его?

+0

как предполагают, я думаю, что ваш пользователь jenkins не настроен на чтение репо, поэтому сценарий ждет ввода, который он не может получить. попробуйте войти в систему как пользователь jenkins и запустить скрипт вручную (если вы можете сделать это в Windows). В качестве альтернативы используйте git-плагин https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin – KeepCalmAndCarryOn

+0

У меня была аналогичная проблема. В моем случае проблема заключалась в том, что консоль запрашивала учетные данные для репо. Запрос на это не отображался в выходной консоли jenkins. Таким образом, работа была начата и вечно ждала имя пользователя/пароль. – MichaelS

+0

Обновлены, чтобы уточнить, что я уверен, что раб Jenkins использует известного пользователя и этот пользователь может запустить Git –

ответ

1

Это может привести к ряду причин. Вот вещи, которые работали для меня в прошлом.

  1. Я знаю, что ты сказал это выше, но только перепроверить: Убедитесь, что при запуске git fetch --all вручную на ведомой машине, он не запрашивает пароль. Если это произойдет, Дженкинс застрянет на этом шаге, поэтому вам нужно будет установить пару ключей SSH.

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

  3. На ведомой машине установите переменную окружения HOME на номер C:\users\[username], заполнив свое имя пользователя. (Для более старых ОС это было C:\Documents and Settings\[username].) Затем переработайте сервис Jenkins и повторите попытку.

  4. Дважды проверьте, что в разделе «Администрирование»> «Службы» подчиненная служба Jenkins «Вход в систему» ​​установлен для вашего пользователя и пароль верен. Если нет, установите эти значения, переработайте службу Jenkins и повторите попытку.

  5. Если ничего из этого не было сделано, попробуйте удалить и переустановить git. И если вы не используете его, попробуйте установить последнюю версию git.

+1

Agh! Номер 4! Не могу поверить, что я еще не уверен в этом - вот почему я так люблю! Проверка сейчас:/ –

+0

Вот и все! Как пользователь я мог запустить git, но служба не работала как пользователь. Это была глупая ошибка - спасибо за улов! Наверное, мне нужно включить мой значок и клавиатуру сейчас :) –

Смежные вопросы