如何检测是否使用Travis-Ci

35
我需要一种方法来确定调用函数的人是否为Travis-CI。如果是Travis-CI,我不想在此处启动会话。 现在,我的测试脚本会创建一个名为test.txt的文件,然后查找它。
protected function __construct() {
    if ( (!session_id()) && (!file_exists('test.txt' ))) session_start();
}

然而,一定有更好的方法。似乎没有文件检查,如果实际上已经创建了会话,新会话将不会被创建。但事实并非如此。如果是这种情况,则下面的链接之前应该已经传递了。

在添加“test.txt”文件之前:
Before
添加之后:
After


3
当系统在被测试时明确改变其行为时,则该系统没有接受到适当的测试。 - paxdiablo
3
@paxdiablo 不完全是。目前的问题是,为了测试我的 WordPress 插件,我们使用一个会启动会话的依赖项。不幸的是,我无法关闭它。 - chriscct7
3个回答

58

一般来说,您可以通过检查环境变量来判断是否在Travis-CI上运行。您可以检查 CI=true 或更具体的 TRAVIS=true。在PHP中,您可以使用getenv()函数获取环境变量的值。

请参阅环境变量的完整列表。您甚至可以在您的.travis.yml文件中设置更多的环境变量


2
我相信这是正确的答案,“CI=TRUE”至少在Travis/AppVeyor/CircleCI中被设置了。 - user4466350
这意味着:if( $_SERVER['CI'] === true ) { } - David Vielhuber

1
如果您正在使用JavaScript,那么有一个非常好的模块叫做is-ci,它可以在NPM上获得,并且是MIT许可证。请注意:它对于任何持续集成环境都会返回true,而不仅仅是TravisCI。

0

对于Java,我正在检查用户:

/**
 * check if we are in the Travis-CI environment
 * @return true if Travis user was detected
 */
public boolean isTravis() {
  String user = System.getProperty("user.name");
  return user.equals("travis");
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接