0

我已经在我的本地服务器上成功安装了PHPCI,设置了一个项目,并运行了我的第一个构建。

即使没有 phpci.yml,PHP CI 似乎也能检测到我的 Codeception 测试(耶!)

但是,构建日志包含以下文本

例外:警告:file_get_contents(/tests/_output/report.tap.log):无法打开流:/path/to/Sites/php-ci/phpci/PHPCI/Plugin/Codeception.php 行中没有这样的文件或目录94 插件:失败

当我查看第 94 行时,我看到以下内容

$tapString = file_get_contents(
    $this->phpci->buildPath . $this->logPath . DIRECTORY_SEPARATOR . 'report.tap.log'
);

PHPCI 似乎正在使用$this->phpci->buildPath.

这条路是什么?它是 PHP CI 路径吗?我的存储库的路径?可以在任何地方的第三个工作区?

我在 PHP CI 中的哪个位置设置此路径?中的每个项目phpci.yml?在管理员的某个地方?

4

1 回答 1

1

我在搜索有关 PHPCI 的答案时发现了您的问题。

我不知道你是否还需要你的答案,但我会把它发布给任何想知道的人。

要回答您的问题:

  • “这条路是什么?” 它是每个构建的唯一生成路径。
  • “是 PHP CI 路径吗?”
  • “我的仓库路径?”
  • “可以在任何地方的第三个工作区?” 不完全是在任何地方,但是是的。

“我在 PHP CI 的哪个位置设置这条路径?”
好吧,为了回答我深入研究了他们的源代码,我发现原始路径是由以下 PHP 代码设置的:

 $buildDirectory = $this->getId() . '_' . substr(md5(microtime(true)), 0, 5);
 $this->currentBuildPath = PHPCI_BUILD_ROOT_DIR . $buildDirectory . DIRECTORY_SEPARATOR;

因此,生成的路径将是构建的 ID 和(或多或少)唯一的​​部分。这里重要的是定义的常量,它在安装目录PHPCI_BUILD_ROOT_DIR的文件中定义:vars.php

// Define PHPCI_BUILD_ROOT_DIR
if (!defined('PHPCI_BUILD_ROOT_DIR')) {
    define('PHPCI_BUILD_ROOT_DIR', PHPCI_DIR . 'PHPCI/build/');
}

所以该目录默认是一个名为的临时文件夹
path/to/phpci/PHPCI/build/4_31370/

这个文件夹当然会在构建完成后再次被删除。

然后,我更改了文件夹的定义,该文件夹
define('PHPCI_BUILD_ROOT_DIR', PHPCI_DIR . 'tempbuilddir/');
为我提供了以下构建临时构建目录:
path/to/phpci/tempbuilddir/6_65873/

所以这个目录是完全可定制的。

尽管如此,自您的版本以来,Codeception 插件似乎已经发生了变化,因为文件名report.tap.log似乎不再出现在源代码中。

我希望这个答案能让您了解 PHPCI 构建目录配置。它确实帮助我发现了这一点。

于 2017-02-21T02:36:30.613 回答