Назад | Перейти на главную страницу

Jenkins (служба Windows) с Git через SSH

Мне сложно настроить Jenkins, работающую как службу Windows, для подключения к серверу git (gitosis) и клонирования репозитория. Jenkins настроен на использование стандартного Плагин Git.

Все размещено у нас: сервер Jenkins включен win.foo.com и gitosis работает на сервере linux (git.foo.com).

Если я RDP в win.foo.com Я могу клонировать (git.exe clone --progress -o origin git@git.foo.com:myproject.git myproject) из командной строки без проблем.

Jenkins работает как служба, и поскольку он не работает под той же учетной записью пользователя, я скопировал .ssh папку в %SystemRoot%\System32\config\systemprofile (как определено в %USERPROFILE% переменная среды) и C:\Program Files (x86)\Git\, но Дженкинс не подхватил ни один из них, даже после полного перезапуска.

Я пробовал использовать оба git.exe и git.cmd; никакой радости в любом случае.

Jenkins выдает следующее сообщение об ошибке:

ERROR: Error cloning remote repo 'origin' : Could not clone git@git.foo.com:myproject.git
ERROR: Cause: Error performing command: C:\Program Files (x86)\Git\cmd\git.cmd clone --progress -o origin git@git.foo.com:myproject.git C:\Program Files (x86)\Jenkins\jobs\myproject\workspace
Command "C:\Program Files (x86)\Git\cmd\git.cmd clone --progress -o origin git@git.foo.com:myproject.git C:\Program Files (x86)\Jenkins\jobs\myproject\workspace" returned status code 128: Cloning into C:\Program Files (x86)\Jenkins\jobs\myproject\workspace...
Access denied
fatal: The remote end hung up unexpectedly

Я уверен, что что-то упустил, но не знаю, что именно.

Совет?

Я читал следующую статью, которая тесно связана: Как мне сообщить Git для Windows, где найти мой закрытый ключ RSA? и это дало хороший намек: HOME-Variable имеет решающее значение, но это не сработало так, как я думал.

После долгих поисков и попыток я нашел эту статью: http://markashleybell.com/portable-git-windows-setting-home-environment-variable.html

На самом деле недостаточно установить переменную среды в Windows как обычно при запуске ssh из учетной записи службы, но нужно изменить конфигурацию, чтобы ключи действительно были найдены.

Краткое актуальное описание:

Перейдите в C: \ Program Files \ Git \ etc \ profile и добавьте следующую строку

HOME="/c/Users/YourUserAccount"

перед

# normalize HOME to unix path
HOME="$(cd "$HOME" ; pwd)"

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

Единственный параметр, который вам нужен действительно чек %HOME% значение переменной окружения, когда Дженкинс пытается клонировать.
Вам нужно отобразить 'set' (переменную среды) сеанса Jenkins и посмотреть, HOME был определен, и если да, то по какому пути.

Напоминание:

  • Windows по умолчанию не определяет HOME
  • msysgit по умолчанию HOME к %USERPROFILE%

Чтобы отобразить переменные, используйте Параметризованная функция сборки:

Ссылка на параметр по имени в построителе. Я использую "env"команда для отображения переменной, за которой следует оператор echo для демонстрации ссылки на значение: