Переопределение переменной среды при запуске на Jenkins
Я тестирую приложение Zend Framework с помощью PHPUnit и Jenkins. Мне нужно переопределить APPLICATION_ENV
переменная среды, доступ к которой осуществляется с помощью PHP getenv
в PHPUnit :
<?php
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
... use APPLICATION_ENV to pick database, configuration, etc. ...
у меня есть две среды: testing
(для локальных машин) и testing-ci
(для машины Дженкинс). Как установить переменную в testing-ci
, когда он работает в Jenkins? Есть ли способ установить его в build.xml
для муравья или Phing?
2 ответов
Шаг 1: добавьте переменные среды в Jenkins.
откройте страницу глобальной или конкретной конфигурации проекта в зависимости от ваших потребностей и отсканируйте переменные среды. Установите флажок и используйте добавить кнопка для добавления пар ключ / значение.
они будут переданы Дженкинсом вашему сценарию сборки Ant.
Шаг 2: загрузите их в Ant.
рядом верхушка вашего муравья build.xml
скрипт, загрузите все переменные среды с помощью env
префикс, чтобы они не мешали другим свойствам.
<property environment="env"/>
теперь все импортированные переменные будут доступны с помощью env
префикс, например,${env.HOME}
.
Шаг 3: передайте их PHPUnit.
предполагая, что вы используете <exec>
задача для запуска PHPUnit, вы можете передать ему каждую необходимую переменную с помощью <env>
ребенок элемент.
<exec taskname="test" executable="phpunit">
<env key="APPLICATION_ENV" value="${env.APPLICATION_ENV}"/>
...
</exec>
Примечание: вы можете попробовать только первый шаг, чтобы увидеть, будет ли Ant передавать переменные среды вместе с выполняемыми дочерними процессами, но я думаю, что два других шага хороши для того, чтобы прояснить, что требуется другим разработчикам.
OK.
вот что вы делаете...
сначала создайте новый файл под названием bootstrap.РНР.
далее в boostrap.php, поставьте следующий код:
if (!empty($argv) &&
($key = array_search('--environment', $argv)) !== FALSE)
{
$env = $argv[$key + 1];
putenv('APPLICATION_ENV=' . $env);
}
загрузить загрузчик.php в ваш testsuite или (еще лучше) phpunit.XML.
наконец, через конфигурацию сборки CI или через консоль или где угодно выполните модульные тесты, такие как phpunit UnitTest.php --environment dev
.
вы хорошо идти.