在Jenkins上运行时覆盖环境变量

dex*_*vip 6 ant phing continuous-integration phpunit jenkins

我正在使用PHPUnit和Jenkins测试Zend Framework应用程序.我需要覆盖PHPUnit 文件中APPLICATION_ENV使用PHP访问的环境变量:getenvbootstrap.php

<?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. ...
Run Code Online (Sandbox Code Playgroud)

我有两个环境:( testing对于本地机器)和testing-ci(对于Jenkins机器).如何将变量设置为testing-ci在Jenkins中运行时?有没有办法build.xml为Ant或Phing 设置它?

Dav*_*ess 7

第1步:将环境变量添加到Jenkins.

根据您的需要打开全局或项目特定的配置页面,并向下扫描环境变量部分.选中该复选框,然后使用" 添加"按钮添加键/值对.

这些将由Jenkins传递给您的Ant构建脚本.

第2步:将它们加载到Ant中.

在Ant build.xml脚本的顶部附近,使用env前缀加载所有环境变量,以便它们不会干扰其他属性.

<property environment="env"/>
Run Code Online (Sandbox Code Playgroud)

现在所有导入的变量都可以使用env前缀,例如${env.HOME}.

第3步:将它们传递给PHPUnit.

假设您正在使用该<exec>任务来运行PHPUnit,您可以使用<env>子元素将每个所需的变量传递给它.

<exec taskname="test" executable="phpunit">
    <env key="APPLICATION_ENV" value="${env.APPLICATION_ENV}"/>
    ...
</exec>
Run Code Online (Sandbox Code Playgroud)

注意:您可能只想尝试第一步,看看Ant是否将环境变量传递给已执行的子进程,但我认为其他两个步骤有助于明确其他开发人员需要什么.