Установить переменную окружения для сборки в hudson



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



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



export DISPLAY=:99


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



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

703   6  

6 ответов:

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

Хотя обратите внимание, что:

Предупреждение http://wiki.hudson-ci.org/images/icons/emoticons/information.gif это еще очень молодая функция, поэтому обратная связь ценится

...

Параметр [s] доступен в качестве параметров среды. Так, например, в раковину ($фу, %фу,%) или муравьиной ( ${ОКР.FOO}) может получить доступ к этим ценности.

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

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

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

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

xvfb-run java -jar selenium-server.jar

Вы пробовали использовать плагин selenium maven?

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

Используя этот пом.конфигурация 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

В соответствии с моим ответом на принятый ответ, вот мои выводы.

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

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

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

/usr/bin/ladeda/:$F00

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

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

export F00=/usr/bin/fiddledede

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

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

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

Comments

    Ничего не найдено.