Плагин Jenkins Credentials и клиент GIT не работают

Я использую плагин Git Client для подключения Jenkins к моему хранилищу (теоретически). Я не могу подключиться к репо с использованием обычной HTTP-аутентификации. Когда я ввожу имя пользователя: пароль вручную, я могу подключиться. Я пробовал несколько разных способов подключения, и кажется, что ничего не работает, как ожидалось. Если я отключу свою HTTP-аутентификацию, Jenkins успешно подключится и соберется без проблем. Я использую...

  • Полномочия 1.10
  • Плагин Jenkins Git Client 1.6.3
  • Плагин Jenkins Git 2.0.3
  • Apache, Git 1.7.1 на сервере

Если я пытаюсь установить путь в конфигурации задания через что-то вроде http://username:password@git.mydomain.com Кажется, он автоматически проверяет правильность пути и не жалуется. Однако, используя этот метод, когда я на самом деле создаю задание, мой сервер сообщает об ошибке несоответствия пароля (в нем отображается имя пользователя, но не пароль, я предполагаю, что пароль действительно используется, хотя я хотел бы знать наверняка), Вот ошибка в Apache error_log:

user jenkins: authentication failure for "/info/refs": Password Mismatch

если я ввожу те же учетные данные в поле учетных данных, оно не подключается и выплевывает:

Failed to connect to repository : Command "git config --local credential.helper store --file=/var/lib/jenkins/tmp/git4177869325176518383.credentials" returned status code 129:
stdout: 
stderr: error: unknown option `local'
usage: git config [options]

Я не вижу --local в руководстве по git, возможно, есть модуль, который мне нужен?

1 ответ

Решение

У меня такая же проблема. Проблема в том, что Jenkins Git плагин ожидает иметь git версия 1.8 или выше, установленная на Jenkins сервер - но не проверяет это и не предупреждает вас, что вы используете устаревшую версию. (git 1.8 поддерживает --local опция должна быть указана для git config; git 1.7 нет.)

Есть несколько вариантов, чтобы обойти это:

  1. Обновите версию git, установленную на вашем сервере.
  2. Пусть Дженкинс скачает git по требованию и использует эту версию для создания своих проектов. (Это занимает довольно много времени.) Этот параметр не использует копию git, установленную на вашем сервере.
  3. Пусть Jenkins использует JGit (версия git на чистом Java, которая не требует установки git на вашем сервере) - насколько я могу судить, он использует JGit, который поставляется с клиентом Jenkins Git.

Опции 2 и 3 доступны через кнопку " Добавить Git" на странице " Управление Jenkins / Настройка системы" в разделе " Установка Git/Git ".

Мой сервер работает под управлением Ubuntu 10.4 LTS, для которого в стандартных репозиториях нет пакета git 1.8, и я предпочитаю не устанавливать неупакованное программное обеспечение на моем сервере, поэтому я исключил вариант 1. Я обнаружил, что конфигурация для варианта 2 слишком обременительна, и у меня не было тёплого ощущения, что он продолжит работать для новых выпусков git. Таким образом, это оставило меня с вариантом 3, который работал хорошо для меня.

Другие вопросы по тегам