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 плагин
Ответы
Ответ 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)
- Открыть диспетчер задач (Ctrl + Shift + Escape)
- (Только для Windows 10) Нажмите More Details в левом нижнем углу всплывающего окна.
- Перейти на вкладку Услуги
- Нажмите кнопку Services...
- Найдите "Дженкинс" в списке услуг
- Щелкните правой кнопкой мыши на "Jenkins" и выберите "Свойства".
- Перейдите на вкладку "Вход" в окне свойств Jenkins.
- Выберите эту учетную запись: в разделе Войти как:
- Введите ваше имя пользователя и пароль
- Нажмите OK
- Перезапустите сервис Jenkins
- Тогда Боб твой дядя.
Ответ 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