Устранение неполадок Cygpath с помощью Jenkins и Windows slave
У меня есть удаленный компьютер с Windows, на котором установлен Cygwin 1.7.35, и мы используем его в качестве ведомого устройства для тестирования CI с Jenkins.
Я создал задание Jenkins для создания проекта Maven (после клонирования из репозитория).
Jenkins содержит плагин Cygpath 1.5, а путь к реестру Cygwin - ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ /Cygwin/Setup
Я использую PreStep для клонирования проекта из хранилища:
source ~/.profile > /dev/null
cd /cygdrive/c
rm -rf .$WORKSPACE/project-name
hg clone something something
Клон репозитория работает нормально. Сбой сборки, и я получаю эту ошибку в выводе консоли:
ERROR: Failed to parse POMs
hudson.util.IOException2: Failed to locate Cygwin installation. Is Cygwin installed?
at hudson.plugins.cygpath.CygpathLauncherDecorator$GetCygpathTask.getCygwinRoot(CygpathLauncherDecorator.java:138)
etc...
Я попытался переписать переменную Path из C:\cygwin64\bin в C:/cygwin64/bin и обратно. Я попробовал это на Cygwin 1.7.32 сначала, а затем на 1.7.35 снова. Я попытался изменить путь в записи реестра с C:\Cygwin64 на C:Cygwin64\bin и обратно. Ничего не работает
Мой коллега строит свой проект на том же сервере Jenkins с тем же ведомым устройством, но он использует проект Ant с build.xml, и он прекрасно работает.
Пожалуйста, есть ли у вас какие-либо предложения о том, как решить эту проблему?
Спасибо!
Питер
2 ответа
Я нашел ответ.
Я создал новую запись реестра под
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Cygnus Solutions\Cygwin\ string rootdir, ориентированный на cygwin64.
Что странно, потому что в моем Jenkins я использую cygpath 1.5, который должен найти правильный путь установки Cygwin, который находится в разделе реестра ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \Cygwin\setup.
Мне также пришлось изменить конфигурацию подчиненного компьютера Jenkins, поскольку версия Java SDK на подчиненном компьютере отличается от версии Java SDK в глобальных настройках Jenkins.
Я надеюсь, что кто-то найдет это полезным! Питер
Я посмотрел в исходном коде файла, который выдал исключение и обнаружил, что он хочет строку из ключа
'HKLM / ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / Wow6432Node / Cygwin / setup'
с именем 'rootdir', который имеет абсолютный путь к вашей установке Cygwin.
Редактировать: в итоге я создал ключ "setup", потому что его не было.