Мне сложно настроить 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
был определен, и если да, то по какому пути.
Напоминание:
HOME
HOME
к %USERPROFILE%
Чтобы отобразить переменные, используйте Параметризованная функция сборки:
Ссылка на параметр по имени в построителе. Я использую "
env
"команда для отображения переменной, за которой следует оператор echo для демонстрации ссылки на значение: