Установить переменную окружения для сборки в Hudson - PullRequest
9 голосов
/ 25 августа 2009

Я пытаюсь поставить проект maven2 в постоянную интеграцию в hudson. Проект использует селен для некоторых интеграционных испытаний. Хадсон работает на безголовом Linux. Я использую xvfb для запуска сеанса сервера x для селена.

Чтобы запустить тесты, мне нужно экспортировать переменную среды с именем DISPLAY. например,

export DISPLAY=:99

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

Есть ли способ зарегистрировать переменную окружения из hudson.

Ответы [ 6 ]

10 голосов
/ 30 сентября 2009

Кстати, я выпускаю плагин setenv для Хадсона сегодня (при условии, что java.net восстанавливается достаточно для меня, чтобы сделать это!) - он ведет себя аналогично параметризованной функциональности сборки, но с более простым пользовательским интерфейсом (просто текстовая область для ввода - пары ключ / значение разделены символами новой строки) и без необходимости предоставлять значения для параметров во время сборки.

4 голосов
/ 25 августа 2009

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

Хотя учтите, что:

warning Это все еще очень молодая функция, поэтому обратная связь приветствуется

...

Параметр [s] доступен в качестве параметров среды. Так, например оболочка ($ FOO,% FOO%) или Ant ($ {env.FOO}) могут получить доступ к этим значениям.

3 голосов
/ 25 августа 2009

Свойства узла Хадсона отлично сработают. Но если вы ищете более автоматизированный способ присвоения номера экрана, вам придется проделать немного больше работы, возможно, подключиться к плагину port-allocator или написать новый плагин BuildWrapper, автоматически запускает xvfb и устанавливает переменную окружения SCREEN от имени сборки.

Если вы хотите переключиться на другой X-сервер для тестирования, вы можете попробовать Xvnc плагин для Hudson. Он автоматически запустит vncserver и также установит переменную окружения SCREEN. У него также есть возможность сделать снимок экрана после завершения испытаний и показать его на странице Гудзона.

1 голос
/ 18 мая 2010

Вы пытались использовать плагин Selen Maven?

Плагин может быть настроен для запуска Xvfb, запуска тестов, а затем его остановки.

используя эту конфигурацию pom.xml:

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>selenium-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>xvfb</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>xvfb</goal>
                </goals>
            </execution>

            <execution>
                <id>selenium</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>start-server</goal>
                </goals>
                <configuration>
                    <background>true</background>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

подробности здесь: http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html

1 голос
/ 20 декабря 2009

Я обнаружил, что запуск селена с использованием xvfb-run более надежен, чем настройка DISPLAY, так что это может работать для вас. Итак:

xvfb-run java -jar selenium-server.jar
0 голосов
/ 07 сентября 2009

Согласно моему ответу на принятый ответ, вот мои выводы.

Остерегайтесь неинициализированных переменных

При использовании функции параметризации в Hudson вы можете добавлять переменные окружения в конец строки - при условии, что они содержат что-то в первую очередь.

Например, если переменная среды $ FOO пуста, и вы должны использовать следующую строку в строковом параметре ...

/usr/bin/ladeda/:$F00

тогда переменная окружения будет читать /usr/bin/ladeda/:$F00.

Однако, если бы я сделал

export F00=/usr/bin/fiddledede

тогда экспортируемая переменная будет ....

/usr/bin/ladeda/:/usr/bin/fiddledede

Когда я изначально запускал это как тест, я не работал с этим - и поэтому думал, что функция параметров не принимает внешние переменные среды, когда это действительно было (они просто должны были что-то содержать).

...