Tomcat + Hudson и тестирование приложения Django - PullRequest
2 голосов
/ 07 декабря 2010

Я использую Hudson для ожидаемой цели тестирования нашего приложения Django. В начальном тестировании я бы развернул Hudson, используя метод war:

java -jar hudson.war

Это сработало отлично. Однако мы хотели запустить экземпляр Hudson на Tomcat для стабильности и большей гибкости для безопасности.

Однако теперь, когда Tomcat работает, Hudson, похоже, не распознает ранее признанные библиотеки Python, такие как Virtualenv. Вот результат теста:

+ bash ./config/testsuite/hudson-build.sh
./config/testsuite/hudson-build.sh: line 5: virtualenv: command not found
./config/testsuite/hudson-build.sh: line 6: ./ve/bin/activate: No such file or directory
./config/testsuite/hudson-build.sh: line 7: pip: command not found

virtualenv и pip были установлены с использованием sudo easy_install, где они?

virtualenv: / usr / local / bin / virtualenv

пункт: / usr / local / bin / pip

Hudson теперь работает под пользователем tomcat6. Если я su войду в пользователя tomcat6 и проверим наличие virtualenv, оно его распознает Таким образом, я в недоумении, почему он там не узнает.

Я попытался удалить команды из сценария и поместить их построчно в окно выполнения оболочки в Гудзоне, но проблема все та же.

Есть идеи? Приветствия.

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Просто добавьте к комментарию Дейва Бахера:

Если вы установите свой путь в .profile, он, скорее всего, не будет выполняться при запуске tomcat..Profile (или любое другое имя в вашей системе) выполняется только тогда, когда у вас есть оболочка входа.Чтобы установить необходимые переменные среды, вы должны использовать другой набор файлов.Иногда их называют .env, и они существуют на глобальном и пользовательском уровне.В моей среде (AIX) файл пользовательского уровня .env может иметь другое имя (имя задается в переменной env либо в файле глобальной среды (например, / etc / environment), либо в параметре при запуске оболочки).

Отказ от ответственности: Это для IBM AIX ksh, но должно быть таким же для ksh в других системах.

PS Я только что нашел хорошее объяснение для .profile и .env с сайта HP.Обратите внимание, что они говорят о оболочке входа (!), Когда говорят о выполнении файла .profile.

1 голос
/ 08 декабря 2010

Глобальные переменные среды можно настроить с помощью Управление Hudson -> Переменные среды или на машину через Машина -> Конфигурировать -> Переменные среды (или для каждой сборки с плагином Setenv). Это звучит как вам может понадобиться установить PATH и PYTHONPATH соответственно; по крайней мере, это простое решение.

Отредактировано, чтобы добавить : Я чувствую, как будто что-то вроде бреда, хотя на самом деле не направлено против вас или вашей ситуации. Я думаю, что у вас уже есть правильное мышление, так как вы используете в первую очередь virtualenv и pip - и вы не без оснований говорите: «Мы ожидаем, что наши сборочные машины будут иметь virtualenv и pip, установленные в /usr/local, "и покончим с этим. Отдыхай как хочешь ...

Хотя PATH - это простая вещь для настройки, она имеет другую сборку окружение (или полагаться на среду пользователя) представляет собой интеграционный «запах». Если вы зависите от определенной среды в вашей сборке, то вы должны либо проверить среду или явно настроить ее как часть сборки. я кладу настройка среды в сценариях сборки, а не в Hudson.

Может быть, ваше единственное предположение, что virtualenv и pip находятся в PATH (потому что это хорошие инструменты для управления другими зависимостями), но предположения имеют тенденцию расти и забываться (до тех пор, пока вам не понадобится машина или пользователь). Я считаю полезным либо иметь явные проверки, либо обратиться к явные пути к исполняемым файлам, которые являются частью моей определенной среды сборки. это особенно полезно иметь четко определенную среду, когда у вас есть устаревшие сборки или если вы зависите от конкретных версий ваших инструментов сборки.

Как часть сборок, где у меня были проблемы со средой (особенно в Windows с cygwin), я печатаю среду как первый шаг сборки. (Но я склонен быть немного параноиком превентивно.)

Я не хочу показаться таким проповедническим, я просто пытаюсь поделиться своей точкой зрения.

...