Сервер непрерывной интеграции Hudson: как увидеть сопоставленные каталоги Windows, которые видны Ant?

Использование Hudson, Ant 1.7, Tomcat 6.20, JDK 1.6 и JDK 1.5; все на коробках Windows.

Мой сценарий сборки Ant для файла WAR использует файлы JAR, хранящиеся на удаленном сервере. Путь к удаленному серверу отображается как сетевой диск в Windows. Файл build.properties используется для указания путей к зависимостям JAR. При сборке с помощью Ant в командной строке или в Eclipse WAR успешно строится и развертывается.

Пример из build.properties:

lib.log4j=S:/Support/JARs/log4j-1.2.15.jar

В приведенной выше записи подключенным сетевым диском в Windows является диск «S».

В настоящее время я оцениваю Hudson на своей локальной рабочей станции. В Hudson, если я попытаюсь использовать сопоставленный путь сетевого диска к файлам JAR, сборка завершится ошибкой. Если я скопирую JAR-файлы в локальный каталог (чтобы они находились в C:/Support/JAR-файлах), сборка успешно скомпилирует и создаст WAR.

Как я могу заставить Hudson учитывать сопоставленные пути к сетевым дискам? Кроме того, есть ли способ избежать необходимости передавать аргументы Ant в пользовательском интерфейсе Hudson и вместо этого фактически использовать файл build.properties? В противном случае Хадсон, похоже, не может прочитать build.properties.

Большое спасибо.

Майк Квентел


person Community    schedule 16.08.2009    source источник
comment
Можете ли вы опубликовать сообщение об ошибке?   -  person rodrigoap    schedule 16.08.2009


Ответы (2)


Я предполагаю, что вы используете hudson как службу Windows. Среда службы несколько отличается от среды обычного пользователя, например, у него будут минимальные или отсутствующие сетевые привилегии. Кроме того, сопоставление дисков происходит во время входа в систему и зависит от сеанса пользователя, поэтому службы не могут на самом деле видеть эти диски, поскольку службам все еще может потребоваться запуск после выхода пользователя из системы и отключения дисков.

Вы можете попробовать настроить службу hudson для использования учетной записи с сетевыми привилегиями и изменить сценарии сборки для использования путей UNC (\ пути типа сервера)

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

Несколько ссылок с полезной информацией:

  1. ИНФОРМАЦИЯ: службы и перенаправленные диски
  2. Описания некоторых рекомендаций по созданию служб Windows
person Jim T    schedule 17.08.2009

Джим Т., большое спасибо за отличный ответ!

Подводя итог, можно сказать, что в Windows экземпляр Tomcat должен иметь права доступа к сопоставленному диску Windows (одно решение для запуска Tomcat под учетной записью пользователя с этими правами), и должны использоваться пути UNC (//remote_server_name/directory_path). В Linux может работать удаленно смонтированный диск Windows (используя команду mount).

Я не пробовал второе предложение делать сборки в рабах.

person Community    schedule 07.10.2009