什么是 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 构建目录配置。它确实帮助我找到了答案。
我已经在我的本地服务器上成功安装了 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 构建目录配置。它确实帮助我找到了答案。