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

Git плагин для Jenkins не может клонировать репо с локальной машины. Код ошибки 128

Ошибка:

Failed to connect to repository : Command "/usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD" returned status code 128:
stdout:
stderr: fatal: 'home/myuser/path/to/project' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Я пробовал следующее:

  • chmod 777 в папку repo (папка, содержащая каталог .git)
  • chowned - jenkins:jenkins в папке репо
  • попытался клонировать в другую папку из этой локальной папки репо: это работает!

Когда я запускаю приведенную выше команду: /usr/bin/git ls-remote -h file:///home/myuser/path/to/project HEAD на cmd, я получаю ветки.

Мои вопросы:

  • почему команда git ls-remote -h ... вызывается, когда она должна быть git clone ...?
  • Как настроить jenkins git плагин для извлечения кода из локального репо

Моя среда:

RHEL 5.9

Jenkins 1.519, установленный как служба (без веб-контейнера)

Git плагин

4b9b3361

Ответ 1

При установке Jenkins в качестве службы по умолчанию Jenkins не создает каталог пользователя, как в: /home/jenkins. Домашний каталог по умолчанию для Дженкинса установлен на /var/lib/jenkins. Из моей работы, как и следовало ожидать, Jenkins имеет проблемы с доступом к локальным ресурсам из другого каталога пользователей.

Я переместил свое клонированное репо под домашний каталог Jenkins по умолчанию, т.е. под /var/lib/jenkins, поэтому моя Repository URL в конфигурации Jenkins Project выглядит так: file:///${JENKINS_HOME}/repo/<myprojectname>

UPDATE: Вышеуказанное работает отлично... но я нашел лучший способ сделать это из этого блога

Здесь описаны шаги:

найдите /etc/init.d/jenkins script. Существует несколько переменных $JENKINS , Это должно привести вас к sysconfig для jenkins, т.е. /etc/sysconfig/jenkins. Остановите экземпляр jenkins:

sudo /sbin/service jenkins stop

Сделайте резервную копию

cp /etc/sysconfig/jenkins /etc/sysconfig/jenkins.bak

В этом файле измените следующее свойство:

$JENKINS_USER="<your desired user>"

Измените право собственности на все связанные каталоги Jenkins:

chown -R <your desired user>:<your user group> /var/lib/jenkins

chown -R <your desired user>:<your user group> /var/cache/jenkins

chown -R <your desired user>:<your user group> /var/log/jenkins

Перезапустите jenkins и эта ошибка должна исчезнуть

sudo /sbin/service jenkins start

Эта ошибка должна исчезнуть сейчас!

Ответ 2

Прошло некоторое время с тех пор, как был задан этот вопрос, но сегодня у меня была эта проблема, и ресурсов очень мало. Скорее всего, потому что люди склонны подключаться к репозиториям git удаленно.

Я проверил с помощью strace, что именно делал jenkins, и да, это была проблема с разрешениями.

Но я решил это проще, чем ответ # 2 - добавив jenkins в группу серверов git - в моем случае git1: root# gpasswd -a jenkins git1 root# service jenkins restart

Ответ 3

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

(Windows 7)

  1. Открыть диспетчер задач (Ctrl + Shift + Escape)
    1. (Только для Windows 10) Нажмите More Details в левом нижнем углу всплывающего окна.
  2. Перейти на вкладку Услуги
  3. Нажмите кнопку Services...
  4. Найдите "Дженкинс" в списке услуг
  5. Щелкните правой кнопкой мыши на "Jenkins" и выберите "Свойства".
  6. Перейдите на вкладку "Вход" в окне свойств Jenkins.
  7. Выберите эту учетную запись: в разделе Войти как:
  8. Введите ваше имя пользователя и пароль
  9. Нажмите OK
  10. Перезапустите сервис Jenkins
  11. Тогда Боб твой дядя.

Ответ 4

  • Jenkins использует команду git clone только в первый раз, когда рабочая область настроена для проекта. Другие экземпляры используют команду git ls-remote.

  • У меня была такая же проблема, когда я настроил Дженкинса. Это было разрешено, играя с SSH-ключами. Это похоже на проблему с конфигурацией. Проверьте, настроены ли SSH-ключи для учетной записи Jenkins.

Также см. пошаговую процедуру настройки SSH в предоставленной ссылке. Это может не дать вам точного решения, но может указать вам на решение.

http://oodlestechnologies.com/blogs/How-to-setup-Jenkins-With-Grails-on-Ubuntu

Ответ 5

Я считаю, что другие решения для меня немного "взломаны". То, что я сделал, это перемещение папки Jenkins Home из /Users/Shared/to/Users/ [myacccount]/. Таким образом, мой Jenkins будет иметь доступ к моим репозиториям и моему Android SDK (потому что я использую Jenkins для). Затем измените переменную среды JENKINS_HOME. Я сделал это, введя JENKINS_HOME в мой .bash_profile (но есть и другие способы сделать это).

Примечание. Я использую OSX