在 Jenkins 上运行时覆盖环境变量
我正在使用 PHPUnit 和 Jenkins 测试 Zend Framework 应用程序。我需要覆盖 APPLICATION_ENV
环境变量,该变量是在 PHPUnit bootstrap.php
文件中使用 PHP 的 getenv
访问的:
<?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
(对于 Jenkins 机器)。当它在 Jenkins 中运行时,如何将变量设置为 testing-ci
?有没有办法在 build.xml
中为 Ant 或 Phing 设置它?
I'm testing a Zend Framework application using PHPUnit and Jenkins. I need to override the APPLICATION_ENV
environment variable which is access using PHP's getenv
in the PHPUnit bootstrap.php
file:
<?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. ...
I have two environments: testing
(for local machines) and testing-ci
(for Jenkins machine). How can I set the variable to testing-ci
when it runs in Jenkins? Is there any way to set it in build.xml
for Ant or Phing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第1步:将环境变量添加到Jenkins。
根据您的需要打开全局或特定于项目的配置页面,然后向下扫描环境变量部分。选中该复选框并使用添加按钮添加键/值对。
这些将由 Jenkins 传递到您的 Ant 构建脚本。
第 2 步:将它们加载到 Ant 中。
在 Ant
build.xml
脚本顶部附近,加载带有env
前缀的所有环境变量,这样它们就不会干扰其他属性。现在,所有导入的变量都可以使用
env
前缀,例如${env.HOME}
。第 3 步:将它们传递给 PHPUnit。
假设您使用
任务来运行 PHPUnit,您可以使用
子元素将每个所需的变量传递给它。注意:您可能只想尝试第一步,看看 Ant 是否会将环境变量传递给执行的子进程,但我认为其他两个步骤有助于明确需要什么其他开发商。
Step 1: Add the environment variables to Jenkins.
Open either the global or project-specific configuration page depending on your needs and scan down for the Environment variables section. Check the checkbox and use the Add button to add key/value pairs.
These will be passed by Jenkins to your Ant build script.
Step 2: Load them into Ant.
Near the top of your Ant
build.xml
script, load all environment variables with anenv
prefix so they don't interfere with other properties.Now all imported variables will be available using the
env
prefix, e.g.${env.HOME}
.Step 3: Pass them to PHPUnit.
Assuming you're using the
<exec>
task to run PHPUnit, you can pass each needed variable to it using the<env>
child element.Note: You might want to try just the first step to see if Ant will pass the environment variables along to executed child processes, but I think the other two steps are good for making it clear what is required to other developers.
好的。
这就是您要做的...
首先,创建一个名为 bootstrap.php 的新文件。
接下来,在 boostrap.php 中,输入以下代码:
将 bootstrap.php 加载到测试套件或(更好)phpunit.xml 中。
最后,通过 CI 构建配置,或通过控制台或任何地方,执行单元测试,例如 phpunit UnitTest.php --environment dev 。
你可以走了。
OK.
Here's what you do...
First, create a new file called bootstrap.php.
Next, in boostrap.php, put the following code:
Load the bootstrap.php into your testsuite or (even better) phpunit.xml.
Finally, via your CI build config, or via the console or wherever, execute your unit tests like
phpunit UnitTest.php --environment dev
.You're good to go.