我已经在本地服务器上成功安装了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
中的每个项目 ?在管理员的某个地方?
我在寻找有关 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 构建目录配置。它当然帮助我找到了答案。