Устранение неполадок 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", потому что его не было.

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