什么是 PHP CI 构建路径

What's a PHP CI Build Path

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

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

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

Exception: Warning: file_get_contents(/tests/_output/report.tap.log): failed to open stream: No such file or directory in /path/to/Sites/php-ci/phpci/PHPCI/Plugin/Codeception.php line 94 PLUGIN: FAILED

当我查看第 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 中的每个项目?在管理员的某个地方?

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

我不知道你是否还需要你的答案,但我会 post 为其他想知道的人提供答案。

回答您的问题:

  • "What is this path?"这是为每个构建生成的唯一路径。
  • "Is it the PHP CI path?"
  • "The path of my repository?"
  • "A third working area that can be anywhere?" 不完全是任何地方,但是是的。

"Where in PHP CI do I set this path?"
好吧,为了回答这个问题,我深入研究了他们的源代码,发现原始路径是由以下 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 构建目录配置。它确实帮助我找到了答案。